PostgreSQL 実行中のSQLを止める方法


PostgreSQLで誤って、ものすごく負荷のかかるSQLを実行してしまったとき、

そのプロセスを止める(殺す・kill)方法。

プロセスIDを調べる

SELECT
    procpid,
    start,
    now() - start AS lap,
    current_query
FROM
    (SELECT
        backendid,
        pg_stat_get_backend_pid(S.backendid) AS procpid,
        pg_stat_get_backend_activity_start(S.backendid) AS start,
        pg_stat_get_backend_activity(S.backendid) AS current_query
    FROM
        (SELECT pg_stat_get_backend_idset() AS backendid) AS S
    ) AS S
WHERE
    current_query <> ''
ORDER BY
    lap DESC;

current_queryに実行中のSQLが表示されるので、そのprocpidがプロセスID

プロセスIDを指定して、プロセスを停止

SELECT pg_cancel_backend(プロセスID);

これで停止できる。

参考

PostgreSQLで現在実行中のSQLの確認と、プロセスのkill

  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。