日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql kill 脚本_批量 kill mysql 中运行时间长的sql

發布時間:2024/9/30 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql kill 脚本_批量 kill mysql 中运行时间长的sql 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下內容來自mysql手冊:

13.5.5.3. KILL語法

KILL [CONNECTION | QUERY] thread_id

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

KILL允許自選的CONNECTION或QUERY修改符:

· KILL CONNECTION與不含修改符的KILL一樣:它會終止與給定的thread_id有關的連接。

· KILL QUERY會終止連接當前正在執行的語句,但是會保持連接的原狀。

如果您擁有PROCESS權限,則您可以查看所有線程。如果您擁有SUPER權限,您可以終止所有線程和語句。否則,您只能查看和終止您自己的線程和語句。

您也可以使用mysqladmin processlist和mysqladmin kill命令來檢查和終止線程。

注釋:您不能同時使用KILL和Embedded MySQL Server庫,因為內植的服務器只運行主機應用程序的線程。它不能創建任何自身的連接線程。

當您進行一個KILL時,對線程設置一個特有的終止標記。在多數情況下,線程終止可能要花一些時間,這是因為終止標記只會在在特定的間隔被檢查:

· 在SELECT, ORDER BY和GROUP BY循環中,在讀取一組行后檢查標記。如果設置了終止標記,則該語句被放棄。

· 在ALTER TABLE過程中,在每組行從原來的表中被讀取前,檢查終止標記。如果設置了終止標記,則語句被放棄,臨時表被刪除。

· 在UPDATE或DELETE運行期間,在每個組讀取之后以及每個已更行或已刪除的行之后,檢查終止標記。如果終止標記被設置,則該語句被放棄。注意,如果您正在使用事務,則變更不會被 回滾。

· GET_LOCK()會放棄和返回NULL。

· INSERT DELAYED線程會快速地刷新(插入)它在存儲器中的所有的行,然后終止。

· 如果線程在表鎖定管理程序中(狀態:鎖定),則表鎖定被快速地放棄。

· 如果在寫入調用中,線程正在等待空閑的磁盤空間,則寫入被放棄,并伴隨"disk full"錯誤消息。

· 警告:對MyISAM表終止一個REPAIR TABLE或OPTIMIZE TABLE操作會導致出現一個被損壞的沒有用的表。對這樣的表的任何讀取或寫入都會失敗,直到您再次優化或修復它(不中斷)。

1、通過information_schema.processlist表中的連接信息生成需要處理掉的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.00sec)

mysql>select concat('KILL',id,';') from information_schema.processlist where user='root' into outfile '/tmp/a.txt';

Query OK,2 rows affected (0.00sec)

mysql>source /tmp/a.txt;

Query OK,0 rows affected (0.00 sec)

2、

殺掉當前所有的MySQL連接

mysqladmin -uroot -p processlist|awk -F "|" '{print $2}'|xargs -n 1 mysqladmin -uroot -p kill

殺掉指定用戶運行的連接,這里為Mike

mysqladmin -uroot -p processlist|awk -F "|" '{if($3 == "Mike")print $2}'|xargs -n 1 mysqladmin -uroot -p kill

3、通過SHEL腳本實現

#殺掉鎖定的MySQL連接for id in `mysqladmin processlist|grep -i locked|awk '{print $1}'`domysqladminkill ${id}done

4、通過Maatkit工具集中提供的mk-kill命令進行

#殺掉超過60秒的sql

mk-kill -busy-time 60 -kill#如果你想先不殺,先看看有哪些sql運行超過60秒

mk-kill -busy-time 60 -print

#如果你想殺掉,同時輸出殺掉了哪些進程

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/

總結

以上是生活随笔為你收集整理的mysql kill 脚本_批量 kill mysql 中运行时间长的sql的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。