Next-Key Lock 为什么要设计成 左开右闭区间呢?设计为间隙锁不就行了?为什么要右闭?

请大佬解答。

补充:

CREATE TABLE `a` (

`id` int(20) NOT NULL AUTO_INCREMENT,

`name` varchar(20000) DEFAULT NULL,

`name_2` varchar(1842) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8

session1加锁:

BEGIN;

SELECT * FROM a WHERE id < 6 AND id > 3 FOR UPDATE

session1加锁 (3,6]。?

验证

session2:

BEGIN;

SELECT * FROM a WHERE id=3 FOR UPDATE; # 可以读取

SELECT * FROM a WHERE id=6 FOR UPDATE; # 阻塞

select 3可以读,

select 6阻塞

为什么select 6要阻塞?

如果是怕使用update 修改6 为5的话,那不怕update 修改3为5么?

另外

测试session2修改边界id。

BEGIN;

SELECT * FROM a WHERE id=3 FOR UPDATE; # 可以读

UPDATE a SET id=2 WHERE id=3 #边界id可以往小改

UPDATE a SET id=5 WHERE id=3 #不能往大改

SELECT * FROM a WHERE id=6 FOR UPDATE; # 6就不能改,因为6有行锁。

UPDATE a SET id=6 WHERE id=6 # 6就不能改,因为6有行锁。

为什么对于边界的处理不一样呢?

mysql区间左开右闭_Innodb的Next-key lock 为什么是左开右闭区间?相关推荐

  1. 膨胀 腐蚀 开运算 闭运算 matlab,11. 形态学膨胀、腐蚀、开运算、闭运算

    1. 膨胀:对边界点进行扩充,填充空洞,使边界向外部扩张的过程. 2. 腐蚀:消除物体边界点,使边界向内部收缩的过程,把小于结构元素的物体去除掉. 3. 开运算: 先腐蚀后膨胀的过程称为开运算,作用: ...

  2. UVA - 11732 strcmp() Anyone?左兄弟右儿子trie

    input n 2<=n<=4000 s1 s2 ... sn 1<=len(si)<=1000 output 输出用strcmp()两两比较si,sj(i!=j)要比较的次数 ...

  3. linux 防火墙设置ftp端口,CentOS 配置防火墙操作实例(启、停、开、闭端口)CentOS Linux-FTP/对外开放端口(接口)TomCat相关...

    CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service   iptables status 停止 ...

  4. GoLand:显示向左向右箭头

    GoLand:显示向左向右箭头 View->Tool 最终效果: 此外,向左向右箭头可以使用快捷键实现: 参考: 1.https://blog.csdn.net/mqdxiaoxiao/arti ...

  5. leetcode704二分法:(左闭右闭+左闭右开)

    前言 又重温了一遍<肖生客的救赎> 其中安迪的一句话一直回荡我的脑中:"人生可以归结为一种简单的选择:不是忙着活,就是忙着死." 多深刻,多简单,又多令人深省, 哪有那 ...

  6. mysql表全连接_关于mysql 实现表连接(左,右,内,全连接)

    mysql 实现表连接(左,右,内,全连接) 查询中出现两个表的连接,下面通过实例来讲解一下各种连接查询的不同之处 表 a,和表b 如下图 a 表中 有 abcd b表中有 abcf 内连接:SELE ...

  7. 区间子数组个数 - LeetCode 795 - 从左向右与从右向左查找

    一.问题描述 给你一个整数数组 nums 和 两个整数:left 及 right .找出 nums 中连续.非空且其中最大元素在范围 [left, right] 内的子数组,并返回满足条件的子数组的个 ...

  8. mysql左连接和内连接区别_MYSQL 左连接右连接和内连接的详解及区别

    MYSQL 左连接右连接和内连接的区别,这里就对这些概念经过一个实例,讲解清楚. 代码如下: drop table table1; CREATE TABLE `andrew`.`table1` ( ` ...

  9. Mysql Where条件执行顺序是从左到右

    where执行顺序是从左往右执行的, 遵守原则:排除越多数据的条件放在第一个.

最新文章

  1. Python 机器学习之项目实践
  2. EMNLP2020:UC伯克利摘最佳论文、Hugging Face获最佳demo
  3. 亚马逊 CTO 回应人脸识别技术质疑:技术无罪,我们无责任
  4. CentOS7服务器Docker构建ubuntu镜像出错invalid argument
  5. SAP MM 销售订单库存与普通库存之间相互转换过账后对于EBEWH以及MBEWH表的更新...
  6. python能在生活中做什么-Python能在生活中做什么
  7. Office Communication Server(OCS)2007 Communicator Web Access(CWA)的部署
  8. MongoDB优越性
  9. jquery中prop()方法和attr()方法的区别浅析
  10. 前端学习(1182):差值表达式
  11. 第十一篇 面向对象进阶
  12. ASP实例讲解:用分页符实现长文章分页显示
  13. Java毕业设计教程源码分享——简易网盘
  14. ensp 不兼容 virtualbox,virtualbox version not support (AR 报错40 41 解决思路)
  15. 帝国cms安装 mysql支持错误_帝国CMS安装时 mysql出错。
  16. C++最小/最大(min;max;minmax;min_element;max_element;minmax_element)
  17. EXCEL公式-文本型数据转换为数值型数据
  18. Linux 中 Netcat 工具的使用
  19. SpringBoot+Vue中使用AES进行加解密(加密模式等对照关系)
  20. 爬虫笔记(一)——Requests库

热门文章

  1. php+strncmp+绕过,PHP strncmp函数
  2. 如何把微信语音汇总成一个MP3文件?
  3. Xamarin Android使用小米推送
  4. 学习java第12天
  5. unity小游戏---跑酷游戏
  6. html中怎样导入css文件路径,前端——css文件引入的路径问题
  7. 如何把录音转换成mp3格式?
  8. Java校招面试经验汇总,看完直接跪服
  9. Amazing! 从“几何深度学习”看深度学习江湖的统一
  10. 9V转5V降压芯片,大电流3A方案和LDO