mysql - 如果需要太长时间,如何停止 MySQL 查询?

是否可以在 MySQL 中使查询超时?

也就是说,如果任何查询超过了我指定的时间,它就会被 MySQL 杀死,它会返回错误而不是等待永恒。

最佳答案

在 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 工具,否则您需要在命令行上提供凭据。

https://stackoverflow.com/questions/2137084/

相关文章:

sql - 在子查询中引用外部查询的表

php - 获得上个月的第一天和最后一天的最佳方式?

mysql - CakePHP - 获取最后一个查询运行

mysql - Rails 控制台通过 id 数组查找用户

mysql - 导入 CSV 以仅更新表中的一列

mysql - 如何在 CentOS7 上更改 MySQL root 帐户密码?

sql - SQL UPDATE中的str_replace?

mysql - 为 mysql/模糊搜索实现 Levenshtein 距离?

MySQL 日期格式 - 插入日期的困难

java - 无法让spring boot自动创建数据库模式