处理MySQL / InnoDB中的死锁

时间:2014-05-19 12:24:46

标签: mysql jdbc innodb

我正在以不同的隔离级别对MySQL进行基准测试。

对于SERIALIZABLE的情况,我经常收到此错误:"Deadlock found when trying to get lock; try restarting transaction at the client side"

阅读http://dev.mysql.com/doc/refman/5.6/en/innodb-deadlocks.html对我没什么帮助。

我有以下问题: 每当收到消息时,数据库的状态是什么?一切都冻结了,系统希望我做一些事情,或者我的交易已经中止,我只是得到了相关信息?

我正在使用jdbc驱动程序连接到MySQL。假设我的策略是重新发布这样的失败事务,我是否需要调用connection.rollback()或者MySQL已经为我做过这个?

1 个答案:

答案 0 :(得分:0)

在死锁的情况下,MySQL将检测它并根据需要自动回滚事务以打破死锁。它倾向于回滚较小的事务(受影响的行)。

如果您的交易被回滚,则假定您将重新发出交易。 MySQL不会为你做这件事。

当您收到此类警报时,MySQL不会等待任何事情。它已经执行了回滚。