是否有一些配置可以在 MySQL 端自动终止或超时非常慢的查询,比如 100 秒。
问问题
11264 次
3 回答
2
您可以通过以下命令列出所有 MySQL 查询:
$ mysqladmin processlist
因此您可以运行一些脚本来解析该列表并终止特定查询。
例如,您可以通过 cron 以任何语言运行一些脚本,以定期检查长查询,例如:
$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> select concat('KILL ',id,';') from information_schema.processlist
where user='root' and time > 200 into outfile '/tmp/a.txt';
mysql> source /tmp/a.txt;
有关的:
阅读更多:
于 2014-01-23T13:11:59.520 回答
0
您应该检查percona 工具包的命令pt-kill
于 2012-12-13T09:18:04.743 回答
0
从 MySQL 5.1 开始,您可以创建一个存储过程来查询 information_schmea.PROCESSLIST 表中所有符合您的条件的查询(在您的情况下为“长时间运行”)。在查询 processlist 表时,您可以简单地遍历游标以终止超出超时条件的正在运行的查询进程。
请看以下示例:查找并终止所有运行时间超过 N 秒的非超级和“系统帐户”查询的过程
于 2012-02-22T14:58:00.337 回答