唯一索引范围查询锁 bug修复了

唯一索引范围查询锁 bug修复了

其他资料介绍入下:
image-20230112180547545
session A 是一个范围查询,按照原则 1 的话,应该是索引 id 上只加 (10,15] 这个 next-key lock ,并且因 为 id 是唯一键,所以循环判断到 id=15 这一行就应该停止了。

但是实现上, InnoDB 会往前扫描到第一个不满足条件的行为止,也就是 id=20 。而且由于这是个范围扫 描,因此索引 id 上的 (15,20] 这个 next-key lock 也会被锁上。照理说,这里锁住 id=20 这一行的行为,其 实是没有必要的。因为扫描到 id=15 ,就可以确定不用往后再找了。

验证

版本 8.0.24
在这里插入图片描述

数据准备
在这里插入图片描述
在这里插入图片描述

col1 加了普通索引
在这里插入图片描述
开始验证
按照上述资料锁住范围是 (10,20]
其实值锁住了(10,15]
在这里插入图片描述
在15 到20之间插入数据成功 说明并没有锁住 (15,20]
在这里插入图片描述
插入 14时 发生阻塞
在这里插入图片描述
进行update 语句验证时 只锁住了 15 这一条记录
**加粗样式**

结论:唯一索引范围查询锁 bug修复了,唯一索引范围查询时,插入时是间隙锁,查询时是行索。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值