pgAdminIIIで同様の機能があるのですが、ロック一覧を取得するのに凄い時間が掛かってしまい、まともにウィンドウが開かなくなったので、実行中のクエリーを取得するSQLを書いてみました。
このSQLを呼び出すシェルスクリプトを用意し、コマンドラインから実行できるようにしています。
アプリケーション名をトリムしているので、お好みに合わせて調整してください。
\pset columns 0;
\pset border 0;
\pset format 'wrapped'
SELECT
procpid AS "PID"
, to_char(start,'MM/DD HH24:MI') AS "開始時間"
, to_char(now() - start,'DD HH24:MI') AS "実行時間"
, usename "user"
, substr(application_name, 1, 10) as "name"
, client_addr "IP"
, regexp_replace(current_query,'\(\r\n|\r|\n|\t\)',' ','g') AS "クエリー"
FROM (
SELECT
S.pid AS procpid
, S.query_start AS start
, S.usename
, S.application_name
, S.client_addr
, S.query AS current_query
FROM (
SELECT *
FROM pg_stat_activity
WHERE state <> 'idle'
) AS S
) AS S
WHERE current_query <> ''
AND current_query NOT LIKE '%DISCARD ALL%'
ORDER BY
"実行時間" DESC
, "PID";





0 件のコメント:
コメントを投稿