mysql区间左开右闭_Innodb的Next-key lock 为什么是左开右闭区间?
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 为什么是左开右闭区间?相关推荐
- 膨胀 腐蚀 开运算 闭运算 matlab,11. 形态学膨胀、腐蚀、开运算、闭运算
1. 膨胀:对边界点进行扩充,填充空洞,使边界向外部扩张的过程. 2. 腐蚀:消除物体边界点,使边界向内部收缩的过程,把小于结构元素的物体去除掉. 3. 开运算: 先腐蚀后膨胀的过程称为开运算,作用: ...
- UVA - 11732 strcmp() Anyone?左兄弟右儿子trie
input n 2<=n<=4000 s1 s2 ... sn 1<=len(si)<=1000 output 输出用strcmp()两两比较si,sj(i!=j)要比较的次数 ...
- linux 防火墙设置ftp端口,CentOS 配置防火墙操作实例(启、停、开、闭端口)CentOS Linux-FTP/对外开放端口(接口)TomCat相关...
CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service iptables status 停止 ...
- GoLand:显示向左向右箭头
GoLand:显示向左向右箭头 View->Tool 最终效果: 此外,向左向右箭头可以使用快捷键实现: 参考: 1.https://blog.csdn.net/mqdxiaoxiao/arti ...
- leetcode704二分法:(左闭右闭+左闭右开)
前言 又重温了一遍<肖生客的救赎> 其中安迪的一句话一直回荡我的脑中:"人生可以归结为一种简单的选择:不是忙着活,就是忙着死." 多深刻,多简单,又多令人深省, 哪有那 ...
- mysql表全连接_关于mysql 实现表连接(左,右,内,全连接)
mysql 实现表连接(左,右,内,全连接) 查询中出现两个表的连接,下面通过实例来讲解一下各种连接查询的不同之处 表 a,和表b 如下图 a 表中 有 abcd b表中有 abcf 内连接:SELE ...
- 区间子数组个数 - LeetCode 795 - 从左向右与从右向左查找
一.问题描述 给你一个整数数组 nums 和 两个整数:left 及 right .找出 nums 中连续.非空且其中最大元素在范围 [left, right] 内的子数组,并返回满足条件的子数组的个 ...
- mysql左连接和内连接区别_MYSQL 左连接右连接和内连接的详解及区别
MYSQL 左连接右连接和内连接的区别,这里就对这些概念经过一个实例,讲解清楚. 代码如下: drop table table1; CREATE TABLE `andrew`.`table1` ( ` ...
- Mysql Where条件执行顺序是从左到右
where执行顺序是从左往右执行的, 遵守原则:排除越多数据的条件放在第一个.
最新文章
- Python 机器学习之项目实践
- EMNLP2020:UC伯克利摘最佳论文、Hugging Face获最佳demo
- 亚马逊 CTO 回应人脸识别技术质疑:技术无罪,我们无责任
- CentOS7服务器Docker构建ubuntu镜像出错invalid argument
- SAP MM 销售订单库存与普通库存之间相互转换过账后对于EBEWH以及MBEWH表的更新...
- python能在生活中做什么-Python能在生活中做什么
- Office Communication Server(OCS)2007 Communicator Web Access(CWA)的部署
- MongoDB优越性
- jquery中prop()方法和attr()方法的区别浅析
- 前端学习(1182):差值表达式
- 第十一篇 面向对象进阶
- ASP实例讲解:用分页符实现长文章分页显示
- Java毕业设计教程源码分享——简易网盘
- ensp 不兼容 virtualbox,virtualbox version not support (AR 报错40 41 解决思路)
- 帝国cms安装 mysql支持错误_帝国CMS安装时 mysql出错。
- C++最小/最大(min;max;minmax;min_element;max_element;minmax_element)
- EXCEL公式-文本型数据转换为数值型数据
- Linux 中 Netcat 工具的使用
- SpringBoot+Vue中使用AES进行加解密(加密模式等对照关系)
- 爬虫笔记(一)——Requests库