天蓬老师2017-04-17 15:05:03
リーリー
ここではlock_modeが非常に明確です。
以前に実行された文 delete from t where a = 11; は (negative infinity,11] 区間に排他ロックを追加するためです。なぜレコード ロックではなく排他ロックなのでしょうか? ここでの a は一意ではないためです。 Index は通常のインデックスです。詳細については http://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html
を参照してください。
怪我咯2017-04-17 15:05:03
MySQL のデフォルトのセッション分離レベルは繰り返し読み取りであるため、より多くのギャップ ロックが生成されますが、ファントム読み取りが許容される場合は、ロック競合の可能性を減らすために読み取りコミット レベルにダウングレードすることを検討できます。