为了账号安全,请及时绑定邮箱和手机立即绑定

萌新!mysql死锁后,究竟是等待超时,还是直接报错回滚,或者在不同情况下不同表现?万分感谢

萌新!mysql死锁后,究竟是等待超时,还是直接报错回滚,或者在不同情况下不同表现?万分感谢

郎朗坤 2019-08-21 13:46:48
我看到有些文章说,针对死锁问题,要设置合理的死锁超时时间。但是有的又说InnoDB将自动检测事务死锁,并立刻回滚,返回错误。我试了一下,发现是“InnoDB将自动检测事务死锁,并立刻回滚,返回错误。”更符合实验结果。所以mysql死锁后,究竟是等待超时,还是直接报错回滚,或者在不同情况下不同表现?如果“InnoDB将自动检测事务死锁,并立刻回滚,返回错误。”是正确状况,那很多文章说的”死锁等待超时时间”是个什么概念?
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

死锁超时时间应该指的是锁等待时间,参数为innodb_lock_wait_timeout
这两个处理方法对应的是不同的情况
死锁检测:默认开启,InnoDB在加锁的时候会检测加锁后是否会造成死锁,如果会就回滚代价最小的那一个事务
锁等待超时时间:一是为了处理检测不出来的那种死锁,二是避免等待正常锁(非死锁,可能是大事务)时间过长
                            
查看完整回答
反对 回复 2019-08-21
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

我认为死锁并不是能够百分百检查出来的一种问题,所以能够检查出来的死锁肯定是立即报错了,傻乎乎等着超时不是很傻吗?
那如果是不能检查出来的死锁,设置超时机制就是有必要的了。
                            
查看完整回答
反对 回复 2019-08-21
  • 2 回答
  • 0 关注
  • 266 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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