杀死所有查询-MySQL


17

有时在SNAFU中,我必须跑kill query xxxxxxx20或30次。kill all我缺少任何命令吗?

由于我不喜欢打字。


重新启动服务器?
德里克·唐尼

@DTest-可以通过查询完成吗?我没有直接的服务器访问权限。
JIStone

这是其他开发人员和DBA(+1)可以方便使用的问题!
RolandoMySQLDBA 2011年

Answers:


15

从Linux命令行

for PROC_TO_KILL in `mysql -h... -u... -p... -A --skip-column-names -e"SHOW PROCESSLIST" | grep -v "system user" | awk '{print $1}'` ; do mysql -h... -u... -p... -A --skip-column-names -e"KILL QUERY ${PROC_TO_KILL}" ; done

您可以在for循环的标题中更改grep选项,以在查询中找到特定的用户或特定的字符串。

如果您的MySQL 5.1的进程列表位于INFORMATION_SCHEMA中,则可以执行以下操作从mysql客户端中批量生成KILL QUERY命令:

SELECT GROUP_CONCAT(CONCAT('KILL QUERY ',id,';') SEPARATOR ' ') KillQuery
FROM information_schema.processlist WHERE user<>'system user'\G

您可以对INFO字段执行WHERE子句以查找特定查询,对长期运行的查询执行TIME字段,或对特定数据库执行DB字段。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.