超时-如果时间太长,如何停止MySQL查询?
在MySQL中可以使查询超时吗?
也就是说,如果任何查询超过我指定的时间,它将被MySQL终止,并且将返回错误而不是等待永恒。
acheruns asked 2020-07-26T21:09:21Z
9个解决方案
10 votes
CPAN上有一个不错的Perl脚本可以做到这一点:[http://search.cpan.org/~rsoliv/mysql-genocide-0.03/mysql-genocide]
只需调度它以适当的参数运行。 创建一个CRONtab文件/etc/cron.d/mysql_query_timeout安排它每分钟运行一次:
* * * * * root /path/to/mysql-genocide -t 7200 -s -K
其中7200是允许的最大执行时间(以秒为单位)。 -s开关过滤掉除SELECT查询以外的所有查询。 -K开关指示脚本杀死匹配的进程。
root用户应该能够在不进行身份验证的情况下运行本地mysql工具,否则您将需要在命令行上提供凭据。
Erik answered 2020-07-26T21:09:49Z
9 votes
我只是将以下bash脚本设置为cron作业,以使用MySQL 5.0完成此任务(杀死了已执行30秒钟以上的任何查询)。 在这里共享它,以防万一它对任何人都有用(如果我的bash脚本风格低效或糟糕,很抱歉,这不是我的主要开发语言):
#!/bin/bash
linecount=0
processes=$(echo "show processlist" | mysql -uroot