MySQL InnoDB志愿者交易成为僵局受害者

时间:2017-12-11 17:54:30

标签: mysql innodb deadlock

在MySQL(5.6或更高版本)中是否有一种机制可以让一个事务(或声明)自愿成为受害者,以防它陷入僵局?

启用InnoDB死锁检测后,当识别出死锁时,InnoDB会确定要杀死哪个事务(成为受害者)以便允许其他事务继续进行。有一种算法用于确定哪个交易是受害者。

我的问题是我们是否可以在会影响算法的语句中使用任何语法,基本上告诉InnoDB“如果此语句/事务涉及死锁,那么选择我作为受害者。”

1 个答案:

答案 0 :(得分:1)

  

“我做的远远好​​得多......” - TRX#8675309

在死锁情况下将事务终止的当前算法是已更改较少行的事务被终止。如果出现平局,InnoDB内部代码可以任意选择;我们不知道选择的原因。

因此,一个事务可以“自愿”的唯一方法是更改​​比其他事务更少的行。