MariaDB [locktest]> select * from gaplockt where id = 100 for update;
那么gap4锁的范围是多少呢? 是(10,100]吗?
直接告诉你们答案,不是,它的范围是(10,+∞),下面我们通过实验来验证 。
MariaDB [locktest]> insert into gaplockt values(99,‘jingruyang99‘);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
MariaDB [locktest]> insert into gaplockt values(100,‘jingruyang100‘);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
MariaDB [locktest]> insert into gaplockt values(1000,‘jingruyang1000‘);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
可以看到id=99 id= 100 id=1000 都是上了锁的,所以gap4的区间为(10,+∞)
我们再来讨论gap1
执行以下语句获取gap1
MariaDB [locktest]> select * from gaplockt where id = -100 for update;
gap1的区间我直接告诉大家,(-∞,1)
下面我们通过实验证明 。
MariaDB [locktest]> insert into gaplockt values(-99,‘jingruyang99‘);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
MariaDB [locktest]> insert into gaplockt values(-100,‘jingruyang99‘);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
MariaDB [locktest]> insert into gaplockt values(-10000,‘jingruyang99‘);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
看到上面的结果,就不用我多说什么了吧 。
以下是两个比较有参考价值的链接,有兴趣的朋友可以看一下 。
Mysql中的GAP锁(间隙锁)
MySQL的innoDB锁机制以及死锁处理
mysql间隙锁
标签:ror 全表扫描 tran not 范围 csdn tab creat image
【mysql:数据库之删除记录对自动增长的影响】
- 9 Python人工智能入门:Python语法之字符串操作
- 不懂数据库知识的前端后端程序员就真可能变成猿吗
- 18、零基础学电脑:键盘详解之分区
- mysql数据库中的sql语句——作业题讲解-2
- 进制与ASCII码之间的转换
- mybatis框架:一对一关联查询之分步查询
- 众神|超级英雄回归 《雷霆沙赞!众神之怒》3月17日上映 一批国外大片蜂拥“春季档”
- MySQL教程4 MySQL8运算符 22.向JSON数据中插入新值 学习猿地
- Java架构之MongoDB-删除文档-deleteOen函数
- 桃之夭夭桃冻撞奶怎么才能做的更加美味鲜香有口感呢?