分離レベル (Isolation Level)
[Database]
トランザクション同時実行時の問題点
トランザクションを同時実行した場合に、トランザクションの分離レベルによっていくつかの問題が発生する。
- 更新データの損失 (Lost Updates)
- ダーティーリード (Dirty Read)
別のトランザクションにより更新されたが、まだコミットされていないデータを読んでしまえる。
- 反復不可能読み取り
トランザクション中に、繰り返し同じデータを参照するとき、そのつど値が変わってしまう状態。 同一トランザクション内で、同じSELECT文が実行された場合に、同じ紹介結果が保証されない。
- ファントムリード
トランザクション中に、突然現れたり消えたりしてしまうデータ。 同一トランザクション内で、同じSELECT文を実行した場合に、 他の更新処理により条件に合致するようになったデータまで紹介結果に入る。
分離レベル (Isolation Level)
Isolation(分離レベル) | Dirty Read(ダーティーリード) | Non-Repeatable Reads(反復不可能読み取り) | Phantom Reads(ファントムリード) |
---|---|---|---|
Read Uncommitted(非コミット読み取り) | 起こりうる | 起こりうる | 起こりうる |
Read Committed(コミット済み読み取り) | − | 起こりうる | 起こりうる |
Repeatable Read(繰り返し可能読み取り) | − | − | 起こりうる |
Serializable(直列化可能) | − | − | − |
YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto
Copyright© 矢木 浩人 All Rights Reserved.