この記事は MySQL Casual Advent Calendar 2017 の7日目です。 最近、デッドロックを真剣に対応する機会があったのでその時のメモです。
デッドロックとは?
デッドロックとは「複数のトランザクションが互いがロックの開放を待ち、結果として、どの処理も先に進めなくなってしまった状態」を指す。 単にロック待ちが長時間になっているケースはデッドロックとは呼ばない。
| 時間 | TRANSACTION(1) | TRANSACTION(2) |
|---|---|---|
| 1 | BEGIN | |
| 2 | BEGIN | |
| 3 | UPDATE t1 SET col1 … |