mysql - 提交时会发生死锁吗?

标签 mysql database deadlock database-deadlocks

到目前为止,在我见过的所有 SQL 死锁示例中,死锁都是在执行 SELECT/UPDATE 等时出现的。

如果我的所有语句都成功执行,当我COMMIT时是否有可能出现死锁?

我试图用我的 ORM 捕获死锁异常,想知道在 flush() 周围使用 try{} 是否足够,或者它是否应该包装 commit() 也是如此。

最佳答案

是的,执行 COMMIT 时可能会发生死锁。更准确地说,您的应用程序可能会在执行 COMMIT 时被告知死锁。

假设您是连接 A 并执行一些操作序列。独立地,不同的连接(连接 B)做了一些导致死锁的事情,DBMS 决定回滚连接 A。

但是,连接 A 已经完成了它想做的所有事情并决定提交。好吧,这是在 DBMS 决定执行回滚后客户端在连接 A 上执行的第一个操作,因此您会在此时收到通知。

您应该处理每个操作的错误,即使是 COMMIT。

关于mysql - 提交时会发生死锁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18171769/

相关文章:

node.js - neo4j 是否有可能限制收集的数据?

mysql - 为什么无法将数据加载到mysql :

database - ORM 还是 "Vietnam of Computer Science"吗?

mysql - Innodb更新锁定

mysql - 如何避免 MySQL 'Deadlock found when trying to get lock; try restarting transaction'

php - 根据备用表值插入到表中

MySQL 创建过程产生错误 1064

mysql - 如何获取值保持高于限制的时间

php - 无法在 tcpdf 中创建多个多边形

postgresql - 关于Postgresql死锁的问题