2011-03-28 146 views
14

使用'show engine innodb status'我看到wordpress有兩個死鎖。我想清除這些,但是我沒有看到這兩個cmds中的任何一個的活動進程(IE會「殺死」並希望強制回滾)。清除事務死鎖?

我可以看到線程ID,查詢IDS等,但沒有什麼我可以用它來阻止任何工作。

關於如何解決這個問題的建議?

編輯:這裏有狀態的(有關?)部分:

------------------------ 
LATEST DETECTED DEADLOCK 
------------------------ 
110327 10:54:14 
*** (1) TRANSACTION: 
TRANSACTION 9FBA099E, ACTIVE 0 sec, process no 14207, OS thread id 1228433728 starting index read 
mysql tables in use 1, locked 1 
LOCK WAIT 2 lock struct(s), heap size 376, 1 row lock(s) 
MySQL thread id 12505112, query id 909492800 juno....edu 129....54 wordpress_user updating 
DELETE FROM wp_options WHERE option_name = ''_site_transient_timeout_theme_roots'' 
*** (1) WAITING FOR THIS LOCK TO BE GRANTED: 
RECORD LOCKS space id 4951009 page no 4 n bits 384 index `option_name` of table `wordpress_work`.`wp_options` trx id 9FBA099E lock_mode X waiting 
Record lock, heap no 309 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 
0: len 30; hex 5f736974655f7472616e7369656e745f74696d656f75745f7468656d655f; asc _site_transient_timeout_theme_; (total 35 bytes); 
1: len 8; hex 0000000000002b6d; asc  +m;; 

*** (2) TRANSACTION: 
TRANSACTION 9FBA0995, ACTIVE 0 sec, process no 14207, OS thread id 1230031168 starting index read 
mysql tables in use 1, locked 1 
3 lock struct(s), heap size 1248, 2 row lock(s) 
MySQL thread id 12505095, query id 909492789 juno....edu 129.....54 wordpress_user updating 
DELETE FROM wp_options WHERE option_name = ''_site_transient_timeout_theme_roots'' 
*** (2) HOLDS THE LOCK(S): 
RECORD LOCKS space id 4951009 page no 4 n bits 384 index `option_name` of table `wordpress_work`.`wp_options` trx id 9FBA0995 lock_mode X locks rec but not gap 
Record lock, heap no 309 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 
0: len 30; hex 5f736974655f7472616e7369656e745f74696d656f75745f7468656d655f; asc _site_transient_timeout_theme_; (total 35 bytes); 
1: len 8; hex 0000000000002b6d; asc  +m;; 

*** (2) WAITING FOR THIS LOCK TO BE GRANTED: 
RECORD LOCKS space id 4951009 page no 4 n bits 384 index `option_name` of table  `wordpress_work`.`wp_options` trx id 9FBA0995 lock_mode X waiting 
Record lock, heap no 309 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 
0: len 30; hex 5f736974655f7472616e7369656e745f74696d656f75745f7468656d655f; asc _site_transient_timeout_theme_; (total 35 bytes); 
1: len 8; hex 0000000000002b6d; asc  +m;; 

*** WE ROLL BACK TRANSACTION (1) 
+0

'KILL query-id' should work? – Konerak 2011-03-28 16:49:34

+0

但表示查詢未通過「SHOW PROCESSLIST」 – ethrbunny 2011-03-28 17:48:00

+0

出現,我認爲你需要殺死連接 – 2011-03-28 18:05:18

回答

19

鑑於一些 'InnoDB的狀態' 輸出是這樣的:

---TRANSACTION 0 0, not started, process no 1024, OS thread id 140386055603968 
MySQL thread id 197, query id 771 localhost marc 
show innodb status 

你想要做

KILL QUERY 771 

殺死死鎖的兩個查詢之一。這會殺死查詢,但保持連接處於打開狀態。如果你想殺死連接,那麼你會做KILL 197

+3

「未知線程ID」試圖任一值。 – ethrbunny 2011-03-28 18:46:35

+2

這應該是在MySQL的新版本'顯示引擎InnoDB的status',我在5.6.10與'show InnoDB的status'是不是一個有效的命令。 – 2013-08-22 22:56:35

+3

我遇到過類似的情況。這不是關於'show'命令的語法。由於'show processlist'不顯示與這些查詢有關的任何連接,這意味着這些死鎖事務將保留在存儲引擎的級別中,而不是MySQL API的級別。我發現解決這種問題的唯一方法就是重新啓動MySQL的服務。 – Sender 2013-09-05 15:24:07

7

我知道這是舊的,但通常當你看到這樣的事情時,這是因爲發生了死鎖,觸發死鎖的應用程序早已轉移 - 僵局的受害者得到警告並且失敗或記錄一個錯誤或重試,並且任何一種方式都轉移到了其他生產性的東西上。如果您正在編寫軟件,通常不需要做任何事情,除了查看死鎖的原因並嘗試並避免未來的死鎖之外。如果您只是使用該軟件(例如,如果您不在Wordpress上工作,則使用Wordpress),您可以將死鎖報告爲可能的錯誤。

4

使用'顯示引擎innodb狀態'我看到wordpress有兩個死鎖......關於如何解決這個問題的建議?

以爲我會提供更多的信息,這些信息可以幫助我們解決類似的問題。我們看到Java hibernate問題導致鎖定。我們通過梳理谷槽的輸出來發現鎖具:

show engine innodb status; 

這就吐出了一大堆信息。相關章節位於TRANSACTIONS部分。在輸出相關的問題似乎是:

3 lock struct(s), heap size 1248, 2 row lock(s) 
MySQL thread id 12505095, query id 909492789 juno....edu 129.....54 

對於我們來說是一個表示固定鎖定了# lock struct(s)。殺死它,你需要使用「線程ID#」規定的執行 - 在這種情況下:

kill 12505095 

這個工作在AWS上的MySQL RDS以及本地的MySQL。


在我們的交易部分,我們也看到了以下內容:

---TRANSACTION 644793773, ACTIVE 21 sec 
2 lock struct(s), heap size 360, 1 row lock(s) 
MySQL thread id 217, OS thread handle 0x2aef097700, query id 10177 1.3.5.7 mpsp cleaning up 

我們期待爲2 lock struct(s)ACTIVE 21 sec消息兩者。