《Mysql學(xué)習(xí)批量 kill mysql 中運(yùn)行時(shí)間長(zhǎng)的sql》要點(diǎn):
本文介紹了Mysql學(xué)習(xí)批量 kill mysql 中運(yùn)行時(shí)間長(zhǎng)的sql,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
MYSQL入門?KILL語法
MYSQL入門KILL [CONNECTION | QUERY] thread_id
每個(gè)與mysqld的連接都在一個(gè)獨(dú)立的線程里運(yùn)行,您可以使用SHOW PROCESSLIST語句查看哪些線程正在運(yùn)行,并使用KILL thread_id語句終止一個(gè)線程.
MYSQL入門KILL允許自選的CONNECTION或QUERY修改符:
MYSQL入門? KILL CONNECTION與不含修改符的KILL一樣:它會(huì)終止與給定的thread_id有關(guān)的連接.
? KILL QUERY會(huì)終止連接當(dāng)前正在執(zhí)行的語句,但是會(huì)保持連接的原狀.
MYSQL入門如果您擁有PROCESS權(quán)限,則您可以查看所有線程.如果您擁有SUPER權(quán)限,您可以終止所有線程和語句.否則,您只能查看和終止您自己的線程和語句.
MYSQL入門您也可以使用mysqladmin processlist和mysqladmin kill命令來檢查和終止線程.
MYSQL入門注釋:您不能同時(shí)使用KILL和Embedded MySQL Server庫,因?yàn)閮?nèi)植的服務(wù)器只運(yùn)行主機(jī)應(yīng)用程序的線程.它不能創(chuàng)建任何自身的連接線程.
MYSQL入門當(dāng)您進(jìn)行一個(gè)KILL時(shí),對(duì)線程設(shè)置一個(gè)特有的終止標(biāo)記.在多數(shù)情況下,線程終止可能要花一些時(shí)間,這是因?yàn)榻K止標(biāo)記只會(huì)在在特定的間隔被檢查:
MYSQL入門? 在SELECT, ORDER BY和GROUP BY循環(huán)中,在讀取一組行后檢查標(biāo)記.如果設(shè)置了終止標(biāo)記,則該語句被放棄.
? 在ALTER TABLE過程中,在每組行從原來的表中被讀取前,檢查終止標(biāo)記.如果設(shè)置了終止標(biāo)記,則語句被放棄,臨時(shí)表被刪除.
? 在UPDATE或DELETE運(yùn)行期間,在每個(gè)組讀取之后以及每個(gè)已更行或已刪除的行之后,檢查終止標(biāo)記.如果終止標(biāo)記被設(shè)置,則該語句被放棄.注意,如果您正在使用事務(wù),則變更不會(huì)被 回滾.
? GET_LOCK()會(huì)放棄和返回NULL.
? INSERT DELAYED線程會(huì)快速地刷新(插入)它在存儲(chǔ)器中的所有的行,然后終止.
? 如果線程在表鎖定管理程序中(狀態(tài):鎖定),則表鎖定被快速地放棄.
? 如果在寫入調(diào)用中,線程正在等待空閑的磁盤空間,則寫入被放棄,并伴隨”disk full”錯(cuò)誤消息.
MYSQL入門? 警告:對(duì)MyISAM表終止一個(gè)REPAIR TABLE或OPTIMIZE TABLE操作會(huì)導(dǎo)致出現(xiàn)一個(gè)被損壞的沒有用的表.對(duì)這樣的表的任何讀取或?qū)懭攵紩?huì)失敗,直到您再次優(yōu)化或修復(fù)它(不中斷).
MYSQL入門
1、通過information_schema.processlist表中的連接信息生成需要處理掉的MySQL連接的語句臨時(shí)文件,然后執(zhí)行臨時(shí)文件中生成的指令
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、殺掉當(dāng)前所有的MySQL連接
MYSQL入門mysqladmin -uroot -p processlist|awk -F "|" '{print $2}'|xargs -n 1 mysqladmin -uroot -p kill
MYSQL入門殺掉指定用戶運(yùn)行的連接,這里為Mike
MYSQL入門mysqladmin -uroot -p processlist|awk -F "|" '{if($3 == "Mike")print $2}'|xargs -n 1 mysqladmin -uroot -p kill
MYSQL入門3、通過SHEL腳本實(shí)現(xiàn)
MYSQL入門
#殺掉鎖定的MySQL連接
for id in `mysqladmin processlist|grep -i locked|awk '{print $1}'`
do
mysqladmin kill ${id}
done
MYSQL入門4、通過Maatkit工具集中提供的mk-kill命令進(jìn)行
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/
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/3649.html