pg_stat_activity PostgreSQL

PostgreSQL

pg_stat_activityビュー

最近業務で使う機会が出てきましたので、調べた内容を記載しておきたいと思います。

公式サイトでは「pg_stat_activity」ビューについては以下の様に記載してありました。

サーバ当たり1行の形式で、状態や現在の問い合わせ等のプロセスの現在の活動状況に関連した情報を表示します。
https://www.postgresql.jp/document/9.2/html/monitoring-stats.html

 

各項目で出力される内容については以下に記載があります。

https://www.postgresql.jp/document/9.2/html/monitoring-stats.html#PG-STAT-ACTIVITY-VIEW

 

ステート(状態)がアクティブなものを表示する例

他のサイトにで紹介されているものだと実行した自分自身が表示されて見にくかったため
「pid != pg_backend_pid()」を入れて、自分自身は表示されないようにした例を記載しておきます。

=> SELECT pid, query_start, substr(query, 0, 80) AS query FROM pg_stat_activity WHERE pid != pg_backend_pid() and state='active' ORDER BY query_start;

 

トランザクションで実行中のクエリとかを表示する

「begin;」等でトランザクションとして実行しているクエリを確認したいときは、「state=’active’」では引っかからず「state = ‘idle in transaction’」となったので記載。

=> SELECT pid, query_start, query, state, query_start, query_start from pg_stat_activity where pid != pg_backend_pid() and state = 'idle in transaction';
  pid  |          query_start          |                      query                      |        state        |          query_start          |          query_start          
-------+-------------------------------+-------------------------------------------------+---------------------+-------------------------------+-------------------------------
 14912 | 2017-12-22 20:04:38.861232+09 | insert into kill_sample values(1, 'kill_data'); | idle in transaction | 2017-12-22 20:04:38.861232+09 | 2017-12-22 20:04:38.861232+09
(1 row)

コメント