首頁  >  文章  >  資料庫  >  Mysql中關於使用kill指令解決死鎖問題詳解

Mysql中關於使用kill指令解決死鎖問題詳解

黄舟
黄舟原創
2017-06-18 10:45:062237瀏覽

這篇文章主要介紹了Mysql使用kill指令解決死鎖問題(殺死某條正在執行的sql語句)的相關資料,需要的朋友可以參考下

#當使用mysql執行某些語句時,會因資料量太大而導致死鎖,沒有反映。這時候,就需要kill掉某個正在消耗資源的query語句即可, KILL指令的語法格式如下:


KILL [CONNECTION | QUERY] thread_id

每個與mysqld的連線都在一個獨立的執行緒裡運行,您可以使用SHOW PROCESSLIST語句查看哪些執行緒正在運行,並使用KILL thread_id語句終止一個執行緒。

KILL允許自選的CONNECTION或QUERY修改符:KILL CONNECTION與不含修改符的KILL一樣:它會終止與給定的thread_id有關的連接。 KILL QUERY會終止連接目前正在執行的語句,但會保持連接的原狀。

如果您擁有PROCESS權限,則您可以查看所有執行緒。如果您擁有超級管理員權限,您可以終止所有執行緒和語句。否則,您只能查看和終止您自己的執行緒和語句。您也可以使用mysqladmin processlist和mysqladmin kill指令來檢查和終止執行緒。

先登入MySQL,然後再使用: show processlist; 查看目前mysql中各個執行緒狀態


mysql> show processlist; 
+------+------+----------------------+----------------+---------+-------+-----------+---------------------  
| Id  | User | Host         | db       | Command | Time | State   | Info 
+------+------+----------------------+----------------+---------+-------+-----------+---------------------  
| 7028 | root | ucap-devgroup:53396 | platform    | Sleep  | 19553 |      | NULL  
| 8352 | root | ucap-devgroup:54794 | platform    | Sleep  | 4245 |      | NULL 
| 8353 | root | ucap-devgroup:54795 | platform    | Sleep  |   3 |      | NULL 
| 8358 | root | ucap-devgroup:62605 | platform    | query  | 4156 | updating | update t_shop set |

以上顯示出目前正在執行的sql語句列表,找到消耗資源最大的那條語句對應的id.

#然後執行kill指令,指令格式如下: 


kill id; 
- 示例: 
kill 8358

殺掉即可。

以上是Mysql中關於使用kill指令解決死鎖問題詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn