トランザクションを同時実行した場合に、トランザクションの分離レベルによっていくつかの問題が発生する。
ある更新処理による更新データが確定される前に、他の更新処理により変更されてしまう。
別のトランザクションにより更新されたが、まだコミットされていないデータを読んでしまえる。
トランザクション中に、繰り返し同じデータを参照するとき、そのつど値が変わってしまう状態。 同一トランザクション内で、同じSELECT文が実行された場合に、同じ紹介結果が保証されない。
トランザクション中に、突然現れたり消えたりしてしまうデータ。 同一トランザクション内で、同じSELECT文を実行した場合に、 他の更新処理により条件に合致するようになったデータまで紹介結果に入る。
Isolation 分離レベル |
Dirty Read ダーティーリード |
Non-Repeatable Reads 反復不可能読み取り |
Phantom Reads ファントムリード |
---|---|---|---|
Read Uncommitted 非コミット読み取り |
起こりうる | 起こりうる | 起こりうる |
Read Committed コミット済み読み取り |
- | 起こりうる | 起こりうる |
Repeatable Read 繰り返し可能読み取り |
- | - | 起こりうる |
Serializable 直列化可能 |
- | - | - |