我正在寻找一种方法来限制mysql服务器上查询的最大运行时间。我认为这可以通过my.cnf
配置文件完成,但在文档中找不到任何相关内容。有谁知道这可以做到吗?感谢。
答案 0 :(得分:14)
将查询发送到服务器以运行时,无法指定最长运行时间。
但是,在数据库服务器上每秒运行一次cron作业,连接并执行类似这样的操作并不罕见:
答案 1 :(得分:8)
您可以按如下方式使用查询:
SELECT MAX_STATEMENT_TIME=1000 * FROM table;
更新:
您应该使用 max_execution_time 代替。
SELECT /*+ MAX_EXECUTION_TIME(1000)*/ * FROM table;
在MySQL 5.7.8中,MAX_STATEMENT_TIME被重命名为max_execution_time。 http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_execution_time
答案 2 :(得分:4)
与此同时,Twitter团队发布了对MySQL的更改,实现了这一点:
- Reduce unnecessary work through improved server-side statement timeout support. This allows the server to proactively cancel queries that run longer than a millisecond-granularity timeout.
请参阅http://engineering.twitter.com/2012/04/mysql-at-twitter.html和https://github.com/twitter/mysql/wiki/Statement-Timeout
答案 3 :(得分:2)
http://mysqlserverteam.com/server-side-select-statement-timeouts/
有趣的升级。我会检查一下:
" MySQL 5.7.4引入了为顶级只读SELECT语句设置服务器端执行时间限制(以毫秒为单位)的能力。
SET GLOBAL MAX_STATEMENT_TIME=1000;
SET SESSION MAX_STATEMENT_TIME=2000;
SELECT MAX_STATEMENT_TIME=1000 * FROM table;