在分析二级索引的间隙锁是否可以成功插入记录时,我们要先要知道二级索引树是如何存放记录的?
二级索引树是按照二级索引值(age列)按顺序存放的,在相同的二级索引值情况下,再按主键 id 的顺序存放 。知道了这个前提,我们才能知道执行插入语句的时候,插入的位置的下一条记录是谁 。
基于前面的实验,事务 A 是在 age = 39 记录的二级索引上,加了 X 型的间隙锁,范围是 (22, 39) 。
插入 age = 22 记录的成功和失败的情况分别如下:
- 当其他事务插入一条 age = 22,id = 3 的记录的时候,在二级索引树上定位到插入的位置,而该位置的下一条是 id = 10、age = 22 的记录,该记录的二级索引上没有间隙锁,所以这条插入语句可以执行成功 。
- 当其他事务插入一条 age = 22,id = 12 的记录的时候,在二级索引树上定位到插入的位置,而该位置的下一条是 id = 20、age = 39 的记录,正好该记录的二级索引上有间隙锁,所以这条插入语句会被阻塞,无法插入成功 。
- 当其他事务插入一条 age = 39,id = 3 的记录的时候,在二级索引树上定位到插入的位置,而该位置的下一条是 id = 20、age = 39 的记录,正好该记录的二级索引上有间隙锁,所以这条插入语句会被阻塞,无法插入成功 。
- 当其他事务插入一条 age = 39,id = 21 的记录的时候,在二级索引树上定位到插入的位置,而该位置的下一条记录不存在,也就没有间隙锁了,所以这条插入语句可以插入成功 。
知道了这个结论之后,我们再回过头看,非唯一索引等值查询时,查询的记录不存在时,执行
select * from performance_schema.data_locks\G; 输出的结果 。
文章插图
在前面分析输出结果的时候,我说的结论是:「
经验总结扩展阅读
- 白芸豆怎么吃减肥 白芸豆怎么吃减肥最佳
- 振腹疗法怎么练 振腹疗法手法训练
- 怎么瘦小腿的肌肉 怎么瘦小腿的肌肉腿
- 视频终端综合征是怎么回事 怎样预防视频终端综合征
- 在家怎么锻炼肌肉是正确的方式 在家怎样锻炼肌肉最有效
- 中国第3座迪士尼会建在哪个城市 为什么总是有相关消息传出
- 鲨鱼肌怎么练 鲨鱼肌怎么练无机械
- 腰部运动后如何做拉伸 腰部运动后怎么拉伸
- wmls是什么意思网络用语
- 他奶奶滴给老子玩阴的是吧是什么梗
