允许冲突间隙锁的原因是,如果从索引中清除记录,则必须合并不同事务在记录上持有的间隙锁。
InnoDB间隙锁定是"纯粹的抑制性",这意味着它们的唯一目的是防止其他事务插入到间隙中....向带有AUTO_INCREMENT列 的表时插入数据行时,事务需要首先获取到该表的AUTO-INC表级锁,以便可以生成连续的自增值。...update user set id = 1000 where id = 514
将主键减小不会被阻塞, 如果能插入数据, 则插入后, 索引顺序是这样的: 3,626, 17,513, 17,514,42,880...也就是, 当等值查询时, InnoDB会对值前后的间隙加锁, 如果存在记录, 则加上记录锁
4.使用普通非聚簇索引的范围查询
a) 左右都是开区间, 且左右范围不存在记录
start transaction...不论查询条件的值是否存在
使用非聚簇联合唯一索引的等值查询, 1. 当查询条件为组成联合索引的所有列时, 值存在, 加记录锁; 值不存在, 加间隙锁. 与普通非聚簇唯一索引是一致的. 2.