わたしは本筋と関係ありません。
ギャップロック、ネクストキーロックって?
ぶっちゃけこの辺が死ぬほどわかりやすいからそこ読もうね
ざっくりと、 - 非連番のidに対してidが存在しない範囲はひとまとまりでロックがかかる現象 - 範囲ロックの一個外側レコードまで、レコードロックがかかる現象です。
です。
何が起こる?
- ギャップロック内のidを指定したinsertできなくなる
- ロックしてねぇよな?って範囲でデッドロックが発生しちゃう
どうやって対処する?
- ロックする範囲をできるだけ絞るようにする
- select * where ~ などで空振らないようにする