3

非常に遅い、たとえば 100 秒のクエリを自動的に強制終了またはタイムアウトするために、MySQL 側で実行できる構成はありますか。

4

3 に答える 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 に答える