Mysql学习批量 kill mysql 中运行时间长的sql

Mysql学习批量 kill mysql 中运行时间长的sql,第1张

概述介绍《Mysql学习批量 kill mysql 中运行时间长的sql》开发教程,希望对您有用。

《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 ',';') +------------------------+| KILL 3101;       | KILL 2946;       +------------------------+2 rows in set (0.00 sec) MysqL>select concat('KILL ',';') 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命令进行

代码如下:
#杀掉超过60秒的sql
mk-kill -busy-time 60 -kill
#如果你想先不杀,先看看有哪些sql运行超过60秒
mk-kill -busy-time 60 -print
#如果你想杀掉,同时输出杀掉了哪些进程
mk-kill -busy-time 60 -print Ckill

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/

总结

以上是内存溢出为你收集整理的Mysql学习批量 kill mysql 中运行时间长的sql全部内容,希望文章能够帮你解决Mysql学习批量 kill mysql 中运行时间长的sql所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1162216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存