提交时是否会出现死锁?

时间:2013-08-11 12:11:52

标签: mysql database deadlock database-deadlocks

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

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

我正在尝试使用我的ORM捕获死锁异常,并想知道在try{}周围使用flush()是否足够,或者是否应该包裹commit()

1 个答案:

答案 0 :(得分:2)

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

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

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

您应该在每个操作上处理错误,甚至是COMMIT。

相关问题