PostgreSQLでプロセスのKILL方法がわからなくて、実行中プロセスの確認方法と、停止(KILL)の方法を調べたのでメモしておきます。
Postgreプロセスの確認方法
以下の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
PostgreプロセスのKill方法
MySQLならばKILL命令ですが、Postgresqlはこう。
SELECT pg_cancel_backend([procpid]);
または
SELECT pg_terminate_backend([procpid]);
これでイケる!!