以下に各々の分離レベルにおいて、問題が発生し得るか否かを示す。
トランザクションの分離性と同時実行性はトレードオフの関係にあり、
システムの特性(要求性能、参照処理・更新処理の関係、
問題発生時の対処方法、人間系の運用などを含む)を十分考慮して
最適な方式を選択する必要がある。
対象となるデータに対するトランザクションが完了していなくても、
最新状態を読み取れる。
共有ロックを保持しない。
コミット済みのデータのみを読み取れる。
他のトランザクションが対象となるデータを更新中の場合は、
コミットされるまで待機する。
SQL文実行終了直後に共有ロックを解放する。
トランザクション実行中に対象となる全てのテーブルのデータが
変更されないようにロックをかける。
共有ロックをトランザクション終了時まで保持する。
トランザクション実行中に対象となる全てのテーブルに対して
データの更新、挿入、削除ができないようロックをかける。
共有ロックをトランザクション終了時まで保持する。
結果としてトランザクションは並行動作しなくなるため
「直列化」と呼ばれる。
分離レベル\問題
更新データの喪失
ダーティーリード
反復不能読み取り
ファントム読み取り
非コミット読み取り
×発生する
×発生する
×発生する
×発生する
コミット済み読み取り
○発生しない
○発生しない
×発生する
×発生する
再読み込み可能読み取り
○発生しない
○発生しない
○発生しない
×発生する
直列化
○発生しない
○発生しない
○発生しない
○発生しない