データベースのデッドロック
会社の識者がデッドロックについてまとめてくれたので忘れないように転載。
主にSQL Serverの話だけどMySQLでも非常に参考になると思う。
デッドロックには以下の3種類があります。
サイクルデッドロック
最も一般的なのがサイクルデッドロックです。
「行1を更新してから行2を更新」するAさん
「行2を更新してから行1を更新」するBさん主な回避方法
- 更新の順序を統一する
- トランザクションをできるだけ小さく、どうしてもダメならアプリで排他制御