2010-12-10 84 views
3

我有一組兩個查詢,我偶爾會看到死鎖。innodb的Mysql low_priority:選擇哪個查詢應回滾到死鎖

一種是隻需偶爾運行的離線查詢。我希望某種方式讓innodb更喜歡在發生死鎖時將此查詢返回,而不是其他方式,比如low_priority關鍵字爲myisam工作的方式。

有沒有什麼辦法可以告訴innodb在發生死鎖的情況下回滾給定的查詢是相對好的?

回答

1

回答你的問題:不,沒有辦法。

只要前臺進程不會使前臺進程死鎖,您可以嘗試提前獲取所有的鎖? (SELECT ... FOR UPDATE)。

另一種選擇是更改後臺進程以按照與前臺進程相同的順序獲取鎖。

2

There's a work-around解決方案來自MySQL論壇,通過更新(更多)虛擬行來賦予事務更高的優先級。

InnoDB使用事務已插入,更新或刪除的行數作爲事務的「大小」度量,並回滾較小的行。