首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何常规地杀死“太长时间”的MySQL查询?

问我如何常规地杀死“太长时间”的MySQL查询?
EN

Stack Overflow用户
提问于 2009-07-27 16:04:21
回答 4查看 5.4K关注 0票数 2

我如何常规地杀死“太长时间”的MySQL查询?

是否有一个显示所有当前查询及其使用时间的系统信息表?

编辑:更新的问题,从“杀死连接”到“杀死查询”

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-07-27 17:13:38

MySQL 5.0.x只支持“显示完整PROCESSLIST”命令。没有查询和过滤进程列表的能力,因为它被认为是一个SQL表,例如从INFORMATION_SCHEMA.PROCESSLIST中选择*。

MySQL有一个杀死命令,它可以杀死查询或整个连接。http://dev.mysql.com/doc/refman/5.0/en/kill.html

尽管如此,您仍然需要一个Ruby或Perl脚本来运行“显示完整PROCESSLIST”,识别哪些查询运行“太长”,然后发出适当的杀死命令。

您也可以在命令行中这样做。

代码语言:javascript
复制
mysqladmin processlist
mysqladmin kill
票数 2
EN

Stack Overflow用户

发布于 2012-07-19 09:11:45

安装RubyGem mysql_manager (sudo gem install mysql_manager),然后运行如下命令:

代码语言:javascript
复制
mysql-manager --kill --kill:user api --kill:max-query-time 30 --log:level DEBUG

有关更多选项,请运行mysql-manager --help。

您可能需要指定另一个--db:dsn、--db:username或--db:password。

在这里阅读更多相关信息:经理

票数 4
EN

Stack Overflow用户

发布于 2009-07-27 16:10:38

你可以执行..。

代码语言:javascript
复制
SHOW FULL PROCESSLIST;

...to向您显示当前正在执行的查询。

但是,您不应该仅仅关闭连接,因为这可能会导致数据完整性问题。相反,您应该使用processlist输出作为在纠正源问题之前突出显示潜在问题所在的一种方法。(从这个意义上说,这是一个(非常)可怜的人的MySQL企业监控。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1189039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档