概要
PostgreSQL上で実行中のSQLを停止する方法について説明する。Javaサーバ上で時間のかかるSQLを実行してしまい、Javaサーバを停止せずにそのスレッドだけを停止したい場合などにおいて、次の手順で実行された SQL を停止できる。
手順
プロセスID(pid)の確認
まず、問題のSQLが実行されるプロセスのIDを調べる。コマンドラインなどで、次のSQLを実行。
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;
それぞれの項目は次の意味を表す。
| procpid | プロセスID |
|---|---|
| start | プロセス実行開始時間 |
| lap | 経過時間 |
| current_query | 実行中のSQL |
プロセスの停止
プロセスIDが分かったら、次のSQLでプロセスを停止できる。SELECT pg_cancel_backend(プロセスID);
コメントする