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)

 

posted @ 2022-08-18 14:31  qqyb  阅读(233)  评论(0)    收藏  举报