在使用mysql運(yùn)行某些語句時(shí),會(huì)因數(shù)據(jù)量太大而導(dǎo)致死鎖,沒有反映。這個(gè)時(shí)候,就需要kill掉某個(gè)正在消耗資源的query語句即可, KILL命令的語法格式如下:
KILL [CONNECTION | QUERY] thread_id
每個(gè)與mysqld的連接都在一個(gè)獨(dú)立的線程里運(yùn)行,您可以使用SHOW PROCESSLIST語句查看哪些線程正在運(yùn)行,并使用KILL thread_id語句終止一個(gè)線程。
KILL允許自選的CONNECTION或QUERY修改符:KILL CONNECTION與不含修改符的KILL一樣:它會(huì)終止與給定的thread_id有關(guān)的連接。KILL QUERY會(huì)終止連接當(dāng)前正在執(zhí)行的語句,但是會(huì)保持連接的原狀。
如果您擁有PROCESS權(quán)限,則您可以查看所有線程。如果您擁有超級(jí)管理員權(quán)限,您可以終止所有線程和語句。否則,您只能查看和終止您自己的線程和語句。您也可以使用mysqladmin processlist和mysqladmin kill命令來檢查和終止線程。
首先登錄MySQL,然后使用: show processlist; 查看當(dāng)前mysql中各個(gè)線程狀態(tài)。
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 |
以上顯示出當(dāng)前正在執(zhí)行的sql語句列表,找到消耗資源最大的那條語句對(duì)應(yīng)的id.
然后運(yùn)行kill命令,命令格式如下:
殺掉即可。
您可能感興趣的文章:- 詳解MySQL kill 指令的執(zhí)行原理
- MySQL kill指令使用指南
- Mysql誤刪數(shù)據(jù)解決方案及kill語句原理
- MySQL Slave 觸發(fā) oom-killer解決方法
- MySQL OOM 系列三 擺脫MySQL被Kill的厄運(yùn)
- MySQL OOM 系統(tǒng)二 OOM Killer
- percona-toolkit之pt-kill 殺掉mysql查詢或連接的方法
- 批量 kill mysql 中運(yùn)行時(shí)間長的sql
- MySQL kill不掉線程的原因