PostgreSQL で実行中のプロセスを確認する

PostgreSQL で 現在実行中のプロセスと 実行中のクエリや実行時間を取得します。

【参考サイト】
PostgreSQLのちょっとテク - よくきたWiki

SELECT
    procpid AS "プロセスID",
    start AS "開始時刻",
    now() - start AS "実行時間",
    current_query AS "実行クエリ"
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 <> '<IDLE>'
AND
    procpid <> pg_backend_pid()
ORDER BY
    "実行時間" DESC;

自分自身のプロセスと idle 中のプロセスを除外しています。

件数が少ないときは、"\x" で展開表示 してあげると 長い SQL でも見やすくなります。

db=# \x
db=# SELECT .... (省略)

-[ RECORD 1 ]-----------------------------
プロセスID | 19848
開始時刻   | 2010-03-25 22:17:48.459064+09
実行時間   | 00:00:18.431077
実行クエリ | <IDLE> in transaction

プロセスを止めたい場合は、次のようにします。

db=# SELECT pg_cancel_backend("プロセスID");

"プロセス ID" に対象のプロセス ID を入れてください。

Google サイト内検索

Amazonアソシエイト