二级索引如果值相同, 则主键值更小的, 排列在前面. 间隙锁锁住了左区间索引值上的叶子节点, 也就是存储主键id的数据....如果能插入数据, 则插入后, 索引顺序是这样的: 3,626, 17,514, 17,515,42,880, 但因为17,514的next指针已经被锁(间隙被锁), 所以这条sql会被阻塞
INSERT...update user set id = 1000 where id = 514
将主键减小不会被阻塞, 如果能插入数据, 则插入后, 索引顺序是这样的: 3,626, 17,513, 17,514,42,880...也就是, 当等值查询时, InnoDB会对值前后的间隙加锁, 如果存在记录, 则加上记录锁
4.使用普通非聚簇索引的范围查询
a) 左右都是开区间, 且左右范围不存在记录
start transaction...不论查询条件的值是否存在
使用非聚簇联合唯一索引的等值查询, 1. 当查询条件为组成联合索引的所有列时, 值存在, 加记录锁; 值不存在, 加间隙锁. 与普通非聚簇唯一索引是一致的. 2.