我正在以不同的隔离级别对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已经为我做过这个?
答案 0 :(得分:0)
在死锁的情况下,MySQL将检测它并根据需要自动回滚事务以打破死锁。它倾向于回滚较小的事务(受影响的行)。
如果您的交易被回滚,则假定您将重新发出交易。 MySQL不会为你做这件事。
当您收到此类警报时,MySQL不会等待任何事情。它已经执行了回滚。