是否可以配置MySQL,使其具有某种类似于PHP最大执行时间的执行限制,以便如果Query所花费的时间超过 - 例如 - 30秒,它会自动死亡?是否可以保持MySQL查询运行错误并关闭您的网站?
我刚刚在phpMyAdmin上做了一个很差的查询作为一个测试,它吃掉了所有的CPU,并杀死了我的网站大约15分钟...必须重新启动MySQL才能恢复我的网站。
任何想法?
是否可以配置MySQL,使其具有某种类似于PHP最大执行时间的执行限制,以便如果Query所花费的时间超过 - 例如 - 30秒,它会自动死亡?是否可以保持MySQL查询运行错误并关闭您的网站?
我刚刚在phpMyAdmin上做了一个很差的查询作为一个测试,它吃掉了所有的CPU,并杀死了我的网站大约15分钟...必须重新启动MySQL才能恢复我的网站。
任何想法?
MySQL不具备PHP所具有的时间限制功能。有些选项可以在my.conf中混淆hit_counter变量或join_table大小,甚至不允许持久连接。但要真正获得你想要的功能,你将不得不编写你自己的轮询守护进程来检查MySQL,并确保没有任何事情发生。
StackOverflow上的用户x9sim9自愿提供以下PHP脚本来完成此操作 - 尽管您可以使用任何其他脚本语言对其进行编码。让你的crontab频繁执行(每分钟左右)。
$result = mysql_query("SHOW FULL PROCESSLIST");
while ($row=mysql_fetch_array($result))
{
$process_id = $row["Id"];
if ($row["Time"] > 200)
{
$sql="KILL {$process_id}";
mysql_query($sql);
}
}
请在这里看到相关的答案的其余部分:Anyway to Limit MySQL Query Execution time?
美丽的答案,谢谢! – ProgrammerGirl 2012-01-28 15:12:24
的可能重复[是否有可能保持MySQL查询从出差错运行,打倒你的网站?](HTTP://计算器。 com/questions/8811684/is-it-it-it-it-keep-a-mysql-query-from-running-awry-and-bring-down-your-si) – 2012-01-10 23:15:00