文章插图
- 在 id = 1 这条记录的主键索引上,加了范围为 (-∞, 1] 的 next-key 锁 。意味着其他事务即无法更新或者删除 id = 1 的这一条记录,同时也无法插入 id 小于 1 的这一些新记录 。
- 在 id = 5 这条记录的主键索引上,加了范围为 (1, 5] 的 next-key 锁 。意味着其他事务即无法更新或者删除 id = 5 的这一条记录 , 同时也无法插入 id 值为 2、3、4 的这一些新记录 。
select * from performance_schema.data_locks\G;
这条语句来看看事务 A 加了什么锁 。输出结果如下,我这里只截取了行级锁的内容 。
文章插图
从上图中的分析中,可以得到事务 A 在主键索引上加了两个 X 型 next-key 锁,分别是:
- 在 id = 1 这条记录的主键索引上,加了范围为 (-∞, 1] 的 next-key 锁;
- 在 id = 5 这条记录的主键索引上,加了范围为(1, 5 ] 的 next-key 锁 。
实验三:再来看针对「小于」的范围查询时,查询条件值的记录「存在」表中的情况 。如果事务 A 的查询语句是小于的范围查询,且查询条件值的记录(id 为 5)存在于表中 。
select * from user where id < 5 for update;
事务 A 加锁变化过程如下:- 最开始要找的第一行是 id = 1,于是对该记录加的是范围为 (-∞, 1] 的 next-key 锁;
- 由于是范围查找,就会继续往后找存在的记录 , 扫描到的第二行是 id = 5,该记录是第一条不满足 id < 5 条件的记录,于是**该记录的锁会退化为间隙锁,锁范围是 (1,5)** 。
- 由于找到了第一条不满足 id < 5 条件的记录,于是停止扫描 。
![](https://cdn.xiaolincoding.com/gh/xiaolincoder/mysql/行级锁/唯一索引范围查询小于.drawio (1).png)
- 在 id = 1 这条记录的主键索引上,加了范围为 (-∞, 1] 的 next-key 锁,意味着其他事务即无法更新或者删除 id = 1 的这一条记录 , 同时也无法插入 id 小于 1 的这一些新记录 。
- 在 id = 5 这条记录的主键索引上,加了范围为 (1,5) 的间隙锁,意味着其他事务无法插入 id 值为 2、3、4 的这一些新记录 。
select * from performance_schema.data_locks\G;
这条语句来看看事务 A 加了什么锁 。输出结果如下,我这里只截取了行级锁的内容 。
文章插图
从上图中的分析中,可以得到事务 A 在主键索引上加了 X 型的范围为 (-∞, 1] 的 next-key 锁 , 和 X 型的范围为 (1, 5) 的间隙锁 。
因此,通过前面这三个实验,可以得知 。
在针对「小于或者小于等于」的唯一索引(主键索引)范围查询时,存在这两种情况会将索引的 next-key 锁会退化成间隙锁的:
- 当条件值的记录「不在」表中时,那么不管是「小于」还是「小于等于」条件的范围查询,扫描到终止范围查询的记录时 , 该记录的主键索引中的 next-key 锁会退化成间隙锁,其他扫描到的记录,都是在这些记录的主键索引上加 next-key 锁 。
- 当条件值的记录「在」表中时:
- 如果是「小于」条件的范围查询,扫描到终止范围查询的记录时 , 该记录的主键索引中的 next-key 锁会退化成间隙锁,其他扫描到的记录,都是在这些记录的主键索引上,加 next-key 锁 。
- 如果是「小于等于」条件的范围查询,扫描到终止范围查询的记录时,该记录的主键索引中的 next-key 锁「不会」退化成间隙锁,其他扫描到的记录,都是在这些记录的主键索引上加 next-key 锁 。
针对非唯一索引等值查询时 , 查询的记录存不存在,加锁的规则也会不同:
- 当查询的记录「存在」时,由于不是唯一索引 , 所以肯定存在索引值相同的记录,于是非唯一索引等值查询的过程是一个扫描的过程,直到扫描到第一个不符合条件的二级索引记录就停止扫描,然后在扫描的过程中,对扫描到的二级索引记录加的是 next-key 锁 , 而对于第一个不符合条件的二级索引记录,该二级索引的 next-key 锁会退化成间隙锁 。同时,在符合查询条件的记录的主键索引上加记录锁 。
推荐阅读
- 原神夜鸦谁是那个怠惰之人怎么完成
- 恋与制作人寻找星座该怎么玩
- 洛克王国祈愿蛇仙怎么搭配技能
- 洛克王国祈愿蛇仙怎么获取
- 金铲铲之战驯龙传送法阵容怎么搭配
- iqoo7玩游戏怎么样_iqoo7游戏体验
- 索尼电视2021年电视新品怎么样_索尼电视2021年电视新品评测
- 专的读音 专怎么读
- 手机怎么把QQ空间说说一次性全删掉(qq如何恢复删掉的说说)
- win7烟雾头怎么调最清楚2021(win7旗舰版烟雾保护头最新)