Next-Key Locks

Next-Key Locks 是记录锁(record lock)与间隙锁(gap lock)的结合。
记录锁是行级别的锁(row-level locks),当InnoDB 对索引进行搜索或扫描时,会在索引对应的记录上设置共享或排他的记录锁。而索引对应记录上的Next-Key Locks不但锁定记录本身,还会此记录之前的“间隙”。也就是说,next-key 锁结合了记录锁,及记录前面间隙上的gap lock。如果一个会话获取了索引对应记录 R 上的共享或排他锁,则另一个会话不能在R 之前(按索引排序)的间隙中插入新的记录。
假设有一个索引,包含的值为 10、11、13 和 20。next-key lock可能的锁定范围如下,其中圆括号表示排除区间端点,方括号表示包含端点:

(negative infinity, 10]
(10, 11]
(11, 13]
(13, 20]
(20, positive infinity)

negative / positive infinity 并不是实际存在的值,而是代表数据表的边界,仅仅是为了便于表示数据表最小索引之前 / 最大索引之后的间隙。

翻译自官网:https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html#innodb-next-key-locks

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值