2011-03-28 140 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消息两者。