Open1
デッドロックがどういう時に起こるのかまとめる

デッドロックが起こる条件
循環的なロック待ちが2つ以上のトランザクションにおいて発生していること。
- 2つ以上のトランザクションが発生していること
- 上記のトランザクションにおいて、ロックを2つ以上取るクエリを発行していること。
3つのトランザクション(Tx)がある時
TxAは R1 をロック済み、R2 を取得しようとするが、TxBが保持中 → Wait
TxBは R2 をロック済み、R3 を取得しようとするが、TxCが保持中 → Wait
TxCは R3 をロック済み、R1 を取得しようとするが、TxAが保持中 → Wait
参考
Coffman Conditions(Dead LockはRDBMSだけに限った話ではないので参考にした。)