是否可以配置MySQL,使其具有类似于PHP的最大执行时间的某种执行限制,这样,如果查询花费的时间超过-30秒,它就会自动被杀死?
我刚刚在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);
}
}
请参阅此处的其余相关答案:无论如何都要限制MySQL查询执行时间?