6

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

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

我试图用我的 ORM 捕获死锁异常,并想知道使用try{}aroundflush()是否足够,或者它是否也应该换行commit()

4

1 回答 1

2

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

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

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

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

于 2013-08-13T00:11:38.583 回答