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

| | コメント(0) | トラックバック(0)

概要

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);

参考URL

PostgreSQLで実行中のSQLの情報を取得する @ ELFの業務日誌

トラックバック(0)

このブログ記事を参照しているブログ一覧: PostgreSQLで現在実行中のSQLの確認と、プロセスのkill

このブログ記事に対するトラックバックURL: http://trasis.jp/cgi-bin/mt/mt-tb.cgi/82

コメントする

2009年4月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30