间隙锁导致的死锁案例理解

间隙锁导致的死锁案例理解

视频中间隙锁导致死锁案例:

https://img1.sycdn.imooc.com/climg/2025e769091c7eaa08920464.jpg

下面是我理解的

https://img1.sycdn.imooc.com/climg/72b2ad69091c7f4011420510.jpg


问题:关于当前间隙锁的范围理解是否正确?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
马听老师 2025-11-19 15:08:49

不会锁这么大的范围,比如:

select * from t18 where a=1 for update;


只要保证不会新增a=1的记录,就行。


其实也好验证,比如session1执行:

select * from t18 where a=1 for update;


session2执行:

insert into t18(a,b,c) values (4,4,4);


看能不能正常执行。

  • 提问者 慕桂英3104630 #1

    按照以下步骤实验:

    https://img1.sycdn.imooc.com/climg/a5e75069091dd8d507400413.jpg

    https://img1.sycdn.imooc.com/climg/74a13f69091dd8ec08410256.jpg


    session2中(2,4,4)、(4,4,4)均成功插入,(1,4,4)等待;由此可看出a=1被锁定,但这是不应该是记录锁吗?为什么还是间隙锁?

    再做如下实验:

    https://img1.sycdn.imooc.com/climg/3127eb69091dda4706890247.jpg

    https://img1.sycdn.imooc.com/climg/e0905569091ddb2009660257.jpg


    为什么session2中(1,4,4)、(2,4,4)、(3,4,4)、(4,4,4)均无法插入?

    2025-11-19 23:00:04
  • 马听老师 回复 提问者 慕桂英3104630 #2

    这一章第3节的第7分钟开始,有解读类似的间隙锁加锁范围,这个例子他加锁范围应该是(1,1,1)到 (4,4,4)

    2025-11-20 18:13:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
DBA数据库工程师
  • 参与学习       262    人
  • 解答问题       79    个

本课程主要讲解MySQL DBA需要掌握的技术,包括MySQL基础、日志文件、讲师的实战经验分享、常用工具、高可用、优化、DBA 实战项目等内容。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师