mk-kill - 顾名思义,杀mysql线程。安装方法查看这里。

在一个OLTP的生产环境,一般不会让sql执行过长的时间,特别是myisam这样表锁的引擎,如果出现长时间执行的sql一般是误操作,要不就是出现问题了。

出现这种情况,一般是登录mysql手工执行kill操作,Maatkit现在提供了一个命令来执行这个操作。例如:
杀掉超过60秒的sql:
mk-kill –busy-time 60 –kill
如果你想先不杀,先看看有哪些sql运行超过60秒:
mk-kill –busy-time 60 –print
如果你想杀掉,同时输出杀掉了哪些进程:
mk-kill –busy-time 60 –print –kill

下面举例说明:
先模拟一个长时间的sql

mysq> select count(*) from test where gid>2;

把长时间的sql打印:

[root@mysql2 ~]# mk-kill –busy-time 5 –print -u -p -h
# 2009-12-29T10:26:34 KILL 499967 (Query 33 sec) select count(*) from test where gid>2

将这个sql杀掉并打印:

[root@mysql2 ~]# mk-kill –busy-time 5 –print -u -p -h –kill
# 2009-12-29T10:27:09 KILL 499967 (Query 68 [...]