mysql next-lock
对记录加锁时,加锁的基本单位是 next-key lock,它是由记录锁和间隙锁组合而成的,next-key lock 是前开后闭区间,而间隙锁是前开后开区间。
唯一索引索引:
当查询的记录是存在的,在用「唯一索引进行等值查询」时,next-key lock 会退化成「记录锁」。
当查询的记录是不存在的,在用「唯一索引进行等值查询」时,next-key lock 会退化成「间隙锁」。
非唯一索引:
当查询的记录是存在的,除了会加 next-key lock 外,还额外加间隙锁,也就是会加两把锁。
当查询的记录是不存在的,只会加 next-key lock,然后会退化为间隙锁,也就是只会加一把锁。
数据: 1、3、5、6、10
查询5时(记录存在)
next-lock范围:(3,5]
间隙锁范围:(5,10)
查询4时(记录不存在)
next-lock范围:(3,5)
间隙锁范围:(3,5)

浙公网安备 33010602011771号