如何kill掉卡頓的MySQL線程?

如何kill掉卡頓的MySQL線程?

作為一個開發人員或者數據庫管理員,學會檢查數據庫運行情況是必不可少的工作。造成MySQL線程卡頓的原因有很多,比如deadlock,但是無論是哪種原因,我們發現問題之後的第一要務就是解決問題,防止問題繼續惡化。那麼,應該如何操作?

查找線程

有兩種方法可以查看正在運行的線程。

  1. 進入到mysql/bin目錄下,執行mysqladmin processlist

  2. 連上MySQL,輸入show processlist;命令查看

我們用Navicat登錄localhost簡單看一下,結果如下:

如何kill掉卡頓的MySQL線程?

結果中每一行對應一個連接,每一列的含義如下:

Id:thread_id,線程id;

User:用戶,如果你不是root,那麼只能看到權限範圍內的SQL;

Host:可以看到來源IP和端口,結合netstat或lsof命令可快速定位進程;

db:當前DB實例;

Command:當前執行的命令,通常是sleep、query、connect ;

Time:當前狀態持續了多少秒;

State:當前狀態;

Info:當前語句;

殺死線程

執行kill id命令即可殺死卡頓的線程

常見原因

造成線程卡頓的原因有很多,但是很多時候通常只有兩種:

  1. 鎖競爭

  2. 慢查詢


分享到:


相關文章: