一番低い分離レベル。ダーティーリードを起こす可能性がある。コミット前に取り消されると混乱が発生する。


文字通りコミットされたデータした読み取らない。(トリガ実行後など)作業中に更新がかかるとそれを読み込んでしまう。

データ参照時(即ちselect文実行時)に共有ロックを掛け、参照終了時に開放する。

データ更新時に専有ロックを掛け、トランザクション終了時に解放する。アクセス経路によって行を更新する順番が異なる場合、デッドロックが発生する可能性がある。

データ参照時にFOR UPDATE句を指定すると、対象行に専有ロックを掛け、トランザクション終了時に解放する。


最初にスナップショットを取る。作業中に他のユーザーが追加したデータを読み込むファントムリードを起こす可能性がある。(sumなどの値が不安定になる。)

因みにMySQLでは特殊な方法でファントムリードを防止しているらしい。

データ参照時に共有ロックを掛け、トランザクション終了時に解放する。

データ更新時に専有ロックを掛け、トランザクション終了時に解放する。


トランザクションを完全に分離して処理する。ロックの競合が多発する可能性がある。


DBスペシャリストのRDBMSの問題ではこれらに関連した問題が出題される。しかし、設定のための具体的なコードを記述する問題は見たことがない。