《Mysql學習批量 kill mysql 中運行時間長的sql》要點:
本文介紹了Mysql學習批量 kill mysql 中運行時間長的sql,希望對您有用。如果有疑問,可以聯系我們。
MYSQL入門?KILL語法
MYSQL入門KILL [CONNECTION | QUERY] thread_id
每個與mysqld的連接都在一個獨立的線程里運行,您可以使用SHOW PROCESSLIST語句查看哪些線程正在運行,并使用KILL thread_id語句終止一個線程.
MYSQL入門KILL允許自選的CONNECTION或QUERY修改符:
MYSQL入門? KILL CONNECTION與不含修改符的KILL一樣:它會終止與給定的thread_id有關的連接.
? KILL QUERY會終止連接當前正在執行的語句,但是會保持連接的原狀.
MYSQL入門如果您擁有PROCESS權限,則您可以查看所有線程.如果您擁有SUPER權限,您可以終止所有線程和語句.否則,您只能查看和終止您自己的線程和語句.
MYSQL入門您也可以使用mysqladmin processlist和mysqladmin kill命令來檢查和終止線程.
MYSQL入門注釋:您不能同時使用KILL和Embedded MySQL Server庫,因為內植的服務器只運行主機應用程序的線程.它不能創建任何自身的連接線程.
MYSQL入門當您進行一個KILL時,對線程設置一個特有的終止標記.在多數情況下,線程終止可能要花一些時間,這是因為終止標記只會在在特定的間隔被檢查:
MYSQL入門? 在SELECT, ORDER BY和GROUP BY循環中,在讀取一組行后檢查標記.如果設置了終止標記,則該語句被放棄.
? 在ALTER TABLE過程中,在每組行從原來的表中被讀取前,檢查終止標記.如果設置了終止標記,則語句被放棄,臨時表被刪除.
? 在UPDATE或DELETE運行期間,在每個組讀取之后以及每個已更行或已刪除的行之后,檢查終止標記.如果終止標記被設置,則該語句被放棄.注意,如果您正在使用事務,則變更不會被 回滾.
? GET_LOCK()會放棄和返回NULL.
? INSERT DELAYED線程會快速地刷新(插入)它在存儲器中的所有的行,然后終止.
? 如果線程在表鎖定管理程序中(狀態:鎖定),則表鎖定被快速地放棄.
? 如果在寫入調用中,線程正在等待空閑的磁盤空間,則寫入被放棄,并伴隨”disk full”錯誤消息.
MYSQL入門? 警告:對MyISAM表終止一個REPAIR TABLE或OPTIMIZE TABLE操作會導致出現一個被損壞的沒有用的表.對這樣的表的任何讀取或寫入都會失敗,直到您再次優化或修復它(不中斷).
MYSQL入門
1、通過information_schema.processlist表中的連接信息生成需要處理掉的MySQL連接的語句臨時文件,然后執行臨時文件中生成的指令
MYSQL入門
mysql> select concat('KILL ',id,';') from information_schema.processlist where user='root';
+------------------------+
| concat('KILL ',id,';')
+------------------------+
| KILL 3101;
| KILL 2946;
+------------------------+
2 rows in set (0.00 sec)
mysql>select concat('KILL ',id,';') from information_schema.processlist where user='root' into outfile '/tmp/a.txt';
Query OK, 2 rows affected (0.00 sec)
mysql>source /tmp/a.txt;
Query OK, 0 rows affected (0.00 sec)
MYSQL入門2、殺掉當前所有的MySQL連接
MYSQL入門mysqladmin -uroot -p processlist|awk -F "|" '{print $2}'|xargs -n 1 mysqladmin -uroot -p kill
MYSQL入門殺掉指定用戶運行的連接,這里為Mike
MYSQL入門mysqladmin -uroot -p processlist|awk -F "|" '{if($3 == "Mike")print $2}'|xargs -n 1 mysqladmin -uroot -p kill
MYSQL入門3、通過SHEL腳本實現
MYSQL入門
#殺掉鎖定的MySQL連接
for id in `mysqladmin processlist|grep -i locked|awk '{print $1}'`
do
mysqladmin kill ${id}
done
MYSQL入門4、通過Maatkit工具集中提供的mk-kill命令進行
MYSQL入門 mk-kill更多用法可參考:
http://www.maatkit.org/doc/mk-kill.html
http://www.sbear.cn/archives/426
Maatkit工具集的其它用法可參考:
http://code.google.com/p/maatkit/wiki/TableOfContents?tm=6
參考文檔:
http://www.google.com
http://www.orczhou.com/index.php/2010/10/kill-mysql-connectio-in-batch/
http://www.mysqlperformanceblog.com/2009/05/21/mass-killing-of-mysql-connections/