国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

批量 kill mysql 中運行時間長的sql

2024-07-24 13:08:44
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了批量 kill mysql 中運行時間長的sql,需要的朋友可以參考下
 

 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.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、殺掉當前所有的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}'`do  mysqladmin kill ${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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 葫芦岛市| 开阳县| 渝北区| 珲春市| 福安市| 嘉义县| 桐乡市| 循化| 西昌市| 湘乡市| 长春市| 永城市| 浠水县| 新河县| 利川市| 班戈县| 安陆市| 仙游县| 岢岚县| 家居| 济源市| 翁牛特旗| 治多县| 晴隆县| 屯留县| 湘潭市| 汉寿县| 临沧市| 鹿泉市| 阳城县| 深水埗区| 浑源县| 旺苍县| 陆丰市| 安福县| 秀山| 寿光市| 石阡县| 盐亭县| 女性| 元朗区|