innodb的Mysql low_priority:选择应该在死锁中回滚哪个查询

时间:2010-12-10 18:20:12

标签: sql mysql locking innodb deadlock

我有一组我偶尔会看到死锁的两个查询。

一个是离线查询,只需要偶尔运行。我想某种方法让innodb更喜欢在发生死锁而不是其他情况时回滚这个查询,有点像low_priority关键字对myisam的工作方式。

有没有办法告诉innodb在发生死锁的情况下回滚给定查询相对正常?

2 个答案:

答案 0 :(得分:2)

来自MySQL论坛的

There's a work-around解决方案通过使事务更新(更多)虚拟行来为事务提供更高的优先级。

  

InnoDB使用事务插入,更新或删除的行数作为事务的“大小”度量,并回滚较小的行。

答案 1 :(得分:1)

回答你的问题:不,没有办法。

只要前台进程没有死锁前台进程,您可以尝试提前获取所有锁? (选择... FOR UPDATE)。

另一个选项是更改后台进程以获取与前台进程相同顺序的锁。