Isolation トランザクション分離レベル トランザクション

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