MySQL 是怎么加行级锁的?

唯一索引等值查询(条件值存在记录锁,不存在邻居间隙锁)

  1. 当查询的记录是「存在」的,在索引树上定位到这一条记录后,将该记录的索引中的 next-key lock 会退化成「记录锁」。
  2. 当查询的记录是「不存在」的,在索引树找到第一条大于该查询记录的记录后,将该记录的索引中的 next-key lock 会退化成「间隙锁」。

唯一索引范围查询(条件值存在大于记录锁,小于不变,不存在邻居之间间隙锁)

  1. 当唯一索引进行范围查询时,会对每一个扫描到的索引加 next-key 锁。
  2. 针对「大于和大于等于」的范围查询,存在条件值,条件值的 next-key 锁会退化成记录锁,不存在就在条件值和下个符合条件的记录值之间加间隙锁。
  3. 针对「小于或者小于等于」的范围查询,存在条件值,小于条件值和上个记录之间加间隙锁,小于等于条件值不转化为间隙锁,不存在时在条件值的前后两个值之间加上间隙锁。

非唯一索引等值查询(条件值存在临键锁,邻居间隙锁,不存在间隙锁)

  1. 条件值存在时,对条件值加 next-key 锁并在主键索引加记录锁,第一个条件值和上个值之间加临键锁,最后一个条件值和下个值之间加间隙锁。
  2. 条件值不存在时,在条件值的前后值之间加间隙锁。

非唯一索引范围查询(条件值不存在邻居间隙锁,存在皆为临键锁)

  1. 条件值不存在,条件值和邻居之间加间隙锁。
  2. 条件值存在全是临键锁。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸葛博仌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值