読者です 読者をやめる 読者になる 読者になる

Hirooooo’s Labo

開発メモ、ガジェット、日記、趣味など、思った事を思ったまんま書くブログ

【メモ】PostgreSQLで実行中のプロセスの確認方法とKILLの方法

f:id:hirooooo-lab:20160627121830j:plain

PostgreSQLでプロセスのKILL方法がわからなくて、実行中プロセスの確認方法と、停止(KILL)の方法を調べたのでメモ。

プロセスの確認方法

以下のSQLを実行すればOK。

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 start lap current_query
31305 2016-06-15 20:54:37.515827 00:00:00 SELECT

出力内容は以下の通り。

  • procpid
    • プロセスID
  • start
    • 実行開始時間
  • lap
    • 経過時間
  • current_query
    • 実行SQL

プロセスのKill方法

MySQLならばKILL命令ですが、Postgresqlはこう。

SELECT pg_cancel_backend([procpid]);

または

SELECT pg_terminate_backend([procpid]);

これでイケる!!