1. 程式人生 > >解決MySQL中死程序(一個聯合查詢耗時32s)

解決MySQL中死程序(一個聯合查詢耗時32s)

很奇怪的現象,一個聯合查詢(in)直接執行sql指令碼的時候,Navicat Premium直接假死;

檢查是否有死程序:

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

可以看到一個時間持續了比較久的事務,現在時間是13點了,而這個事務的開始時間(trx_wait_started )是2012-11-09 12:15:14,

顯然是不正常的,我們看這個事務對應的mysql的執行緒ID(trx_mysql_thread_id)是82230715,就是這個事務導致的 。

殺掉這個程序:

kill 82230715

再次查詢,恢復正常。

能夠用join的時候儘量不要用in,害死人不償命~


檢視正在鎖的事務

    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

檢視等待鎖的事務

    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;