批量 kill mysql 中運(yùn)行時(shí)間長(zhǎng)的sql
KILL語(yǔ)法
KILL [CONNECTION | QUERY] thread_id
每個(gè)與mysqld的連接都在一個(gè)獨(dú)立的線程里運(yùn)行,您可以使用SHOW PROCESSLIST語(yǔ)句查看哪些線程正在運(yùn)行,并使用KILL thread_id語(yǔ)句終止一個(gè)線程。
KILL允許自選的CONNECTION或QUERY修改符:
· KILL CONNECTION與不含修改符的KILL一樣:它會(huì)終止與給定的thread_id有關(guān)的連接。
· KILL QUERY會(huì)終止連接當(dāng)前正在執(zhí)行的語(yǔ)句,但是會(huì)保持連接的原狀。
如果您擁有PROCESS權(quán)限,則您可以查看所有線程。如果您擁有SUPER權(quán)限,您可以終止所有線程和語(yǔ)句。否則,您只能查看和終止您自己的線程和語(yǔ)句。
您也可以使用mysqladmin processlist和mysqladmin kill命令來(lái)檢查和終止線程。
注釋:您不能同時(shí)使用KILL和Embedded MySQL Server庫(kù),因?yàn)閮?nèi)植的服務(wù)器只運(yùn)行主機(jī)應(yīng)用程序的線程。它不能創(chuàng)建任何自身的連接線程。
當(dāng)您進(jìn)行一個(gè)KILL時(shí),對(duì)線程設(shè)置一個(gè)特有的終止標(biāo)記。在多數(shù)情況下,線程終止可能要花一些時(shí)間,這是因?yàn)榻K止標(biāo)記只會(huì)在在特定的間隔被檢查:
· 在SELECT, ORDER BY和GROUP BY循環(huán)中,在讀取一組行后檢查標(biāo)記。如果設(shè)置了終止標(biāo)記,則該語(yǔ)句被放棄。
· 在ALTER TABLE過(guò)程中,在每組行從原來(lái)的表中被讀取前,檢查終止標(biāo)記。如果設(shè)置了終止標(biāo)記,則語(yǔ)句被放棄,臨時(shí)表被刪除。
· 在UPDATE或DELETE運(yùn)行期間,在每個(gè)組讀取之后以及每個(gè)已更行或已刪除的行之后,檢查終止標(biāo)記。如果終止標(biāo)記被設(shè)置,則該語(yǔ)句被放棄。注意,如果您正在使用事務(wù),則變更不會(huì)被 回滾。
· GET_LOCK()會(huì)放棄和返回NULL。
· INSERT DELAYED線程會(huì)快速地刷新(插入)它在存儲(chǔ)器中的所有的行,然后終止。
· 如果線程在表鎖定管理程序中(狀態(tài):鎖定),則表鎖定被快速地放棄。
· 如果在寫入調(diào)用中,線程正在等待空閑的磁盤空間,則寫入被放棄,并伴隨”disk full”錯(cuò)誤消息。
· 警告:對(duì)MyISAM表終止一個(gè)REPAIR TABLE或OPTIMIZE TABLE操作會(huì)導(dǎo)致出現(xiàn)一個(gè)被損壞的沒(méi)有用的表。對(duì)這樣的表的任何讀取或?qū)懭攵紩?huì)失敗,直到您再次優(yōu)化或修復(fù)它(不中斷)。
1、通過(guò)information_schema.processlist表中的連接信息生成需要處理掉的MySQL連接的語(yǔ)句臨時(shí)文件,然后執(zhí)行臨時(shí)文件中生成的指令
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)
2、殺掉當(dāng)前所有的MySQL連接
mysqladmin -uroot -p processlist|awk -F "|" '{print $2}'|xargs -n 1 mysqladmin -uroot -p kill
殺掉指定用戶運(yùn)行的連接,這里為Mike
mysqladmin -uroot -p processlist|awk -F "|" '{if($3 == "Mike")print $2}'|xargs -n 1 mysqladmin -uroot -p kill
3、通過(guò)SHEL腳本實(shí)現(xiàn)
#殺掉鎖定的MySQL連接
for id in `mysqladmin processlist|grep -i locked|awk '{print $1}'`
do
mysqladmin kill ${id}
done
4、通過(guò)Maatkit工具集中提供的mk-kill命令進(jìn)行
#殺掉超過(guò)60秒的sql
mk-kill -busy-time 60 -kill
#如果你想先不殺,先看看有哪些sql運(yùn)行超過(guò)60秒
mk-kill -busy-time 60 -print
#如果你想殺掉,同時(shí)輸出殺掉了哪些進(jìn)程
mk-kill -busy-time 60 -print –kill
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/
相關(guān)文章
Ubuntu下完美實(shí)現(xiàn)遷移MySQL數(shù)據(jù)庫(kù)位置
這篇文章主要介紹了Ubuntu下完美實(shí)現(xiàn)遷移MySQL數(shù)據(jù)庫(kù)位置,十分詳細(xì),有需要的小伙伴可以參考下2015-03-03
SQL實(shí)現(xiàn)LeetCode(180.連續(xù)的數(shù)字)
這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(180.連續(xù)的數(shù)字),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
MySQL登錄時(shí)出現(xiàn) Access denied for user ‘
今天打開mysql的時(shí)候突然提示:Access denied for user 'root'@'localhost' (using password: YES) 在網(wǎng)上搜索了很多文章,本文就來(lái)做一下總結(jié),介紹了幾種場(chǎng)景的解決方法,感興趣的可以了解一下2024-03-03
navicat不能創(chuàng)建函數(shù)解決方法分享
這篇文章主要介紹了navicat不能創(chuàng)建函數(shù)解決方法分享,小編覺得還是挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。2017-10-10
修改MySQL的數(shù)據(jù)庫(kù)引擎為INNODB的方法
本文主要介紹了修改MySQL的數(shù)據(jù)庫(kù)引擎為INNODB的方法,希望能對(duì)您有所幫助。2015-09-09
MySQL的CASE WHEN語(yǔ)句的幾個(gè)使用實(shí)例
這篇文章主要介紹了MySQL的CASE WHEN語(yǔ)句的幾個(gè)使用實(shí)例,需要的朋友可以參考下2014-05-05
CentOS 7 中以命令行方式安裝 MySQL 5.7.11 for Linux Generic 二進(jìn)制版本教程詳解
MySQL 目前的最新版本是 5.7.11,在 Linux 下提供特定發(fā)行版安裝包(如 .rpm)以及二進(jìn)制通用版安裝包(.tar.gz)。這篇文章主要介紹了CentOS 7 中以命令行方式安裝 MySQL 5.7.11 for Linux Generic 二進(jìn)制版本教程詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10

