Isolation トランザクション分離レベル トランザクション
- 書き込んだ値が、他のトランザクションによってなかったことにされるAnomaly。(Dead step)
-
- この図の例では、T1の書き込みはT2によってなかったことにされる。Serializableだったら、T1のあとにT2(またはその逆)で、なかったことにはされないのに…
- 画像はいろんなAnomaly ポエム - Qiita より
- Read committedで起こり得る。Snapshot isolationでも起きる。Repeatable Readでは起きない。
- アトミック操作のクエリなどで対処するのが一般的
- 明示的にロックを取る、トランザクションマネージャーがlost updateを検出するなどもある
- CRDTであればこれは起きない。LWW的な操作で起きてしまう問題。