首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql死锁:“尝试重新启动事务”意味着什么以及锁定的事务到底发生了什么

Mysql死锁:“尝试重新启动事务”意味着什么以及锁定的事务到底发生了什么
EN

Stack Overflow用户
提问于 2014-08-22 10:58:04
回答 1查看 744关注 0票数 0

我遇到的情况是,两个事务会造成mysql死锁。

引发以下错误:Deadlock found when trying to get lock; try restarting transaction

如果我是正确的,这个错误意味着mysql死锁超时已经过期,mysql试图做些什么来消除这个死锁。

对我来说不清楚的是,try restarting transaction是什么意思?如何“重新启动”事务?

两个锁定的事务会发生什么?他们都被取消了吗(滚回)?或者只是其中一个被取消了锁才能被释放。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-22 12:19:36

没有死锁超时(尽管有锁超时)。如果检测到死锁,则不会有多少时间解决它,因此MySQL会立即作出反应。

MySQL将回滚一个或多个事务,直到死锁得到解决。

来自MySQL文档

InnoDB尝试选择要回滚的小事务,其中事务的大小取决于插入、更新或删除的行数。

需要由您的应用程序进行SQL调用才能重试事务。

MySQL在其文档如何使用死锁中有一些建议。

如果您希望避免死锁,并且很难理解死锁的原因,我建议开始另一个问题,并发布完整的受影响的查询和模式,以及理想的来自SHOW ENGINE INNODB STATUS的死锁报告。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25445428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档