コンテンツへスキップ
uencoder

Isolation Level

分離レベル(Isolation Level)は、並行トランザクション間の可視性を定義する。リードアンコミッテッドからシリアライザブルまであり、高いレベルほど強い一貫性を与えるが並行性は下がる。

目的

並行性能と一貫性のバランスを取り、適切な分離レベルを選択する。

メカニズム

リードアンコミッテッド(ダーティリード)、リードコミッテッド(非再現リード)、リピータブルリード(ファントムリード)、シリアライザブル(異常なし)。MVCC はスナップショット分離(リピータブルリードとシリアライザブルの中間)を実現する。PostgreSQL は既定でリードコミッテッド、MySQL InnoDB はリピータブルリードである。

ユースケース

  • 並行トランザクションの一貫性制御
  • ダーティリード回避のためのリードコミッテッド
  • レポート一貫性のためのリピータブルリード
  • 強い一貫性のシリアライザブル

例

  • 入力
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED
    Output
    Avoids dirty reads

    PostgreSQL default

よくあるエラー

Low isolation levels cause non-repeatable/phantom reads
Choose the isolation level per business needs

関連用語

References