疯狂的bug 2017-12-15 14:11 采纳率: 0%
浏览 1977
已结题

MySQL Next-Key Locking 锁定的是哪个范围

问题:

1.Next-Key在通过非唯一索引键查询时,通过等值查询。锁定上下区间的范围。即针对索引10、20、30,若是锁定20,那么Next-key算法会锁定(10,20),(20,30)还是[10,20),[20,30)或者(10,20],(20,30]。

实测是[10,20),[20,30),但是和书中提到的(10,20),(20,30)不符,和官网的概念也不一致

Suppose that an index contains the values 10, 11, 13, and 20. The possible next-key locks for this index cover the following intervals, where a round bracket denotes exclusion of the interval endpoint and a square bracket denotes inclusion of the endpoint:

(negative infinity, 10]

(10, 11]

(11, 13]

(13, 20]

(20, positive infinity)

2.Next-key是为了解决幻读问题。但是在通过等值非索引查询的时候,用Record Lock就行了,为啥还要用Gap Lock。
即如下:

 只要锁住60这个索引,那么再次查询就不会出现幻读,为何需要范围锁定
 select * from user where age =60 FOR UPDATE;
  • 写回答

3条回答 默认 最新

  • oyljerry 2017-12-15 15:31
    关注

    next key是record和gap加起来,所以会有闭区间。
    因为age不是主键,它可以重复。需要age的间隙锁住主键对应的范围。

    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况