PostgreSQLの統計情報コレクタはサーバの活動状況に関する情報を収集し、報告するサブシステムです。 現在、コレクタはテーブルとインデックスへのアクセスをディスクブロックおよび個々の行単位で数えることができます。 またこれは、各テーブル内の総行数、および、各テーブルでのバキュームやアナライズの実施情報を追跡します。 また、ユーザ定義関数の呼ばれた回数、それぞれの消費した総時間を数えます。
また、PostgreSQLは他のサーバプロセスによって現在実行されている正確なコマンドなど現在システム内で起きていること、またシステム内にどんな他の接続が存在するかということについての動的情報を正確に報告する機能を持ちます。 これはコレクタプロセスから独立している機能です。
統計情報の収集によって問い合わせの実行に少しオーバーヘッドが加わりますので、システムは情報を収集するようにもしないようにも設定できます。
これは通常はpostgresql.conf内で設定される、設定パラメータによって制御されます。
(設定パラメータの設定についての詳細は第20章を参照してください。)
  
track_activitiesパラメータは、任意のサーバプロセスで現在実行されているコマンドを監視するかどうかを指定できます。
track_countsパラメータは、テーブルおよびインデックスアクセスに関する統計情報を収集するかどうかを制御します。
track_functionsパラメータは、ユーザ定義関数の使用状況を追跡するかどうかを指定できます。
track_io_timingパラメータは、ブロック読み取りおよび書き込み時間を監視するかどうかを指定できます。
track_wal_io_timingパラメータは、WALの書き込み時間を監視するかどうかを指定できます。
通常、これらの変数は全てのサーバプロセスに適用できるようにpostgresql.conf内で設定されます。
しかし、SETコマンドを使用して、個別のセッションで有効または無効にできます。
(一般ユーザがその活動を管理者から隠すことを防止するために、スーパーユーザのみがSETを使用してこれらのパラメータを変更できます。)
  
統計情報コレクタは収集した情報を他のPostgreSQLプロセスに一時ファイルを介して送信します。
これらのファイルはstats_temp_directoryパラメータで指名されたディレクトリ、デフォルトはpg_stat_tmp内に格納されます。
性能を向上させるために、stats_temp_directoryをRAMベースのファイルシステムを指し示すようにして、物理的なI/O要求を減らすことができます。
サーバが正しくシャットダウンした際は、統計情報がサーバの再起動を跨がって保持されるように、統計情報データの永続的なコピーがpg_statサブディレクトリに格納されます。
サーバ起動時にリカバリが実施される場合(例えば、即時シャットダウンやサーバクラッシュ、ポイントインタイムリカバリの後)、統計カウンタはすべてリセットされます。
  
システムの現在の状態を表示するために、いくつかの定義済みのビューがあり、表 28.1に一覧されています。 また、統計情報の収集結果を表示するために、他にもいくつかのビューがあり、表 28.2に一覧されています。 あるいはまた、28.2.22で説明する、基礎的な統計情報関数を使用した独自のビューを構築することもできます。
この統計情報を使用して、収集されるデータを監視する場合、この情報は即座に更新されないことを認識することが重要です。
個別のサーバプロセスは、待機状態になる直前に、新しい統計情報に関する数をコレクタに送信します。
ですので、実行中の問い合わせやトランザクションは表示上の総和には影響を与えません。
また、コレクタ自体はPGSTAT_STAT_INTERVALミリ秒(サーバ構築時に変更しない限り500 ms)に多くても一度新しい報告を出力します。
ですので、表示上の情報は実際の活動から遅れて表示されます。
しかし、track_activitiesで収集される現在の問い合わせの情報は常に最新です。
  
この他の重要なポイントは、いつサーバプロセスが統計情報を表示するように尋ねられるかです。
サーバプロセスは、まずコレクタプロセスによって発行された最も最近の報告を取り出します。
そして、現在のトランザクションが終わるまで、全ての統計情報ビューと関数においてこのスナップショットを使用し続けます。
ですから、現在のトランザクションを続けている間、統計情報は一定の情報を示します。
同様に、全セッションの現在の問い合わせに関する情報も、そうした情報がトランザクションで最初に要求された時に収集され、そのトランザクションの間同じ情報が表示されます。
これはバグではなく、特徴です。
なぜなら、これにより、知らない間に値が変わるのを考慮することなく、統計情報に対して複数の問い合わせを実行し、その結果を相関することができるからです。
しかし、各問い合わせで新しい結果を取り出したい場合は、確実にトランザクションブロックの外側でその問い合わせを行ってください。
あるいはまた、pg_stat_clear_snapshot()を呼び出すこともできます。
これは現在のトランザクションの統計情報スナップショットを(もしあれば)破棄します。
次に統計情報を使用する場合に新しいスナップショットを取り出すことになります。
  
トランザクションからは、pg_stat_xact_all_tables、pg_stat_xact_sys_tables、pg_stat_xact_user_tables、およびpg_stat_xact_user_functionsを通じて、自身の統計情報(まだコレクタに送られていない)も参照することができます。
これらの数値はトランザクション中に継続的に更新されていくため上記の様な(静的な情報を示す)振る舞いとはなりません。
  
表 28.1で表示される動的な統計ビューの情報の中にはセキュリティ制限があるものがあります。
一般ユーザは自身のセッション(メンバとなっているロールに属するセッション)に関する全情報だけを参照できます。
他セッションに関する行では多くの列がNULLになるでしょう。
しかしながら、セッションの存在とセッションのユーザとデータベースなどの一般的な属性は全ユーザに可視であることに注意してください。
スーパーユーザと組み込みロールpg_read_all_stats(22.5も参照してください)のメンバも全セッションに関する全情報を参照できます。
  
表28.1 動的統計情報ビュー
| ビュー名 | 説明 | 
|---|---|
| pg_stat_activity | サーバプロセスあたり1行の形式で、状態や現在の問い合わせ等のプロセスの現在の活動状況に関連した情報を表示します。
詳細については pg_stat_activityを参照してください。 | 
| pg_stat_replication | WAL送信プロセス毎に1行の形式で、送信サーバが接続したスタンバイサーバへのレプリケーションに関する統計情報を表示します。
詳細については pg_stat_replicationを参照してください。 | 
| pg_stat_wal_receiver | 1行の形式で、受信サーバが接続したサーバからWAL受信サーバに関する統計情報を表示します。
詳細については pg_stat_wal_receiverを参照してください。 | 
| pg_stat_subscription | 1つのサブスクリプションにつき少なくとも1行の形式で、サブスクリプションワーカに関する情報を表示します。
詳細については pg_stat_subscriptionを参照してください。 | 
| pg_stat_ssl | 接続(通常およびレプリケーション)あたり1行の形式で、接続に使われるSSLの情報を表示します。
詳しくは pg_stat_sslを参照してください。 | 
| pg_stat_gssapi | 接続(通常およびレプリケーション)あたり1行の形式で、接続に使われるGSSAPI認証と暗号化に関する情報を表示します。
詳しくは pg_stat_gssapiを参照してください。 | 
| pg_stat_progress_analyze | ANALYZEを実行している(自動バキュームワーカプロセスを含んだ)各バックエンドごとに1行の形式で、現在の進捗を表示します。
28.4.1を参照してください。 | 
| pg_stat_progress_create_index | CREATE INDEXまたはREINDEXを実行している各バックエンドごとに1行の形式で、現在の進捗を表示します。
28.4.2を参照してください。 | 
| pg_stat_progress_vacuum | VACUUMを実行している(自動バキュームワーカプロセスを含んだ)各バックエンドごとに1行の形式で、現在の進捗を表示します。
28.4.3を参照してください。 | 
| pg_stat_progress_cluster | CLUSTERまたはVACUUM FULLを実行している各バックエンドごとに1行の形式で、現在の進捗を表示します。
28.4.4を参照してください。 | 
| pg_stat_progress_basebackup | ベースバックアップをストリームしている各WAL送信プロセスごとに1行の形式で、現在の進捗を表示します。 28.4.5を参照してください。 | 
| pg_stat_progress_copy | COPYを実行している各バックエンドごとに1行の形式で、現在の進捗を表示します。
28.4.6を参照してください。 | 
表28.2 収集済み統計情報ビュー
| ビュー名 | 説明 | 
|---|---|
| pg_stat_archiver | WALアーカイバプロセスの活動状況に関する統計情報を1行のみで表示します。
詳細については pg_stat_archiverを参照してください。 | 
| pg_stat_bgwriter | バックグラウンドライタプロセスの活動状況に関する統計情報を1行のみで表示します。
詳細については pg_stat_bgwriterを参照してください。 | 
| pg_stat_wal | WALの活動状況に関する統計情報を1行のみで表示します。
詳細については pg_stat_walを参照してください。 | 
| pg_stat_database | データベース毎に1行の形式で、データベース全体の統計情報を表示します。
詳細については pg_stat_databaseを参照してください。 | 
| pg_stat_database_conflicts | データベース毎に1行の形式で、スタンバイサーバにおける復旧との競合のためにキャンセルされた問い合わせについてのデータベース全体の統計情報を表示します。
詳細については pg_stat_database_conflictsを参照してください。 | 
| pg_stat_all_tables | 現在のデータベースの各テーブルごとに1行の形式で、特定のテーブルへのアクセスに関する統計情報を示します。
詳細については pg_stat_all_tablesを参照してください。 | 
| pg_stat_sys_tables | システムテーブルのみが表示される点を除き、 pg_stat_all_tablesと同じです。 | 
| pg_stat_user_tables | ユーザテーブルのみが表示される点を除き、 pg_stat_all_tablesと同じです。 | 
| pg_stat_xact_all_tables | pg_stat_all_tablesと似ていますが、現在のトランザクションにて実施された処理結果をカウントします。(数値が見える時点では、これらの数値はpg_stat_all_tablesと関連するビューに含まれていません。)
このビューでは、有効行数、無効行数、およびバキュームやアナライズの活動は表示しません。 | 
| pg_stat_xact_sys_tables | システムテーブルのみが表示される点を除き、 pg_stat_xact_all_tablesと同じです。 | 
| pg_stat_xact_user_tables | ユーザテーブルのみが表示される点を除き、 pg_stat_xact_all_tablesと同じです。 | 
| pg_stat_all_indexes | 現在のデータベースのインデックスごとに1行の形式で、特定のインデックスへのアクセスに関する統計情報を示します。
詳細については pg_stat_all_indexesを参照してください。 | 
| pg_stat_sys_indexes | システムテーブルのインデックスのみが表示される点を除き、 pg_stat_all_indexesと同じです。 | 
| pg_stat_user_indexes | ユーザテーブルのインデックスのみが表示される点を除き、 pg_stat_all_indexesと同じです。 | 
| pg_statio_all_tables | 現在のデータベース内のテーブルごとに1行の形式で、特定のテーブルに対するI/Oに関する統計情報を示します。
詳細については pg_statio_all_tablesを参照してください。 | 
| pg_statio_sys_tables | システムテーブルのみが表示される点を除き、 pg_statio_all_tablesと同じです。 | 
| pg_statio_user_tables | ユーザテーブルのみが表示される点を除き、 pg_statio_all_tablesと同じです。 | 
| pg_statio_all_indexes | 現在のデータベース内のインデックスごとに1行の形式で、特定のインデックスに対するI/Oに関する統計情報を示します。
詳細については pg_statio_all_indexesを参照してください。 | 
| pg_statio_sys_indexes | システムテーブルのインデックスのみが表示される点を除き、 pg_statio_all_indexesと同じです。 | 
| pg_statio_user_indexes | ユーザテーブルのインデックスのみが表示される点を除き、 pg_statio_all_indexesと同じです。 | 
| pg_statio_all_sequences | 現在のデータベース内のシーケンスごとに1行の形式で、特定のシーケンスに対するI/Oに関する統計情報を示します。
詳細については pg_statio_all_sequencesを参照してください。 | 
| pg_statio_sys_sequences | システムシーケンスのみが表示される点を除き、 pg_statio_all_sequencesと同じです
(現時点では、システムシーケンスは定義されていませんので、このビューは常に空です)。 | 
| pg_statio_user_sequences | ユーザシーケンスのみが表示される点を除き、 pg_statio_all_sequencesと同じです。 | 
| pg_stat_user_functions | 追跡された関数ごとに1行の形式で、関数の実行に関する統計情報を示します。
詳細については pg_stat_user_functionsを参照してください。 | 
| pg_stat_xact_user_functions | pg_stat_user_functionsと似ていますが、現在のトランザクション中に呼び出されたものだけをカウントします。
(数値が見える時点では、これらの数値はpg_stat_user_functionsに含まれていません。) | 
| pg_stat_slru | SLRUごとに1行の形で、操作に関する統計情報を示します。
詳細は pg_stat_slruを参照してください。 | 
| pg_stat_replication_slots | レプリケーションスロット毎に1行の形式で、レプリケーションスロットの使用状況に関する統計情報を表示します。
詳細については pg_stat_replication_slotsを参照してください。 | 
インデックス単位の統計情報は、どのインデックスが使用され、どの程度効果があるのかを評価する際に、特に有用です。
pg_statio_ビューは主に、バッファキャッシュの効率を評価する際に有用です。
実ディスク読み取りの数がバッファヒットの数よりもかなり少ないのであれば、そのキャッシュはカーネル呼び出しを行うことなく、ほとんどの読み取り要求を満足させています。
しかし、PostgreSQLバッファキャッシュに存在しないデータはカーネルのI/Oキャッシュにある可能性があり、そのため、物理的な読み取りを行うことなく取り出される可能性があるというPostgreSQLのディスクI/Oの取り扱いのため、これらの統計情報は、完全な論拠を提供しません。
PostgreSQLのI/O動作に関するより詳細な情報を入手したいのであれば、PostgreSQL統計情報コレクタとカーネルのI/Oの取り扱いの監視を行うオペレーティングシステムユーティリティを組み合わせることを勧めます。
  
pg_stat_activity
pg_stat_activityはサーバプロセス毎に、そのプロセスの現在の活動に関連する情報を表示する1行を持ちます。
  
表28.3 pg_stat_activityビュー
| 列 型 説明 | 
|---|
| 
        バックエンドが接続するデータベースのOIDです。 | 
| 
        バックエンドが接続するデータベースの名前です。 | 
| 
        バックエンドのプロセスIDです。 | 
| 
        
このプロセスがパラレルクエリワーカであればパラレルグループリーダーのプロセスIDです。
このプロセスがパラレルグループリーダーであるか、パラレルクエリに参加していないのであれば | 
| 
        バックエンドにログインしたユーザのOIDです。 | 
| 
        バックエンドにログインしたユーザの名前です。 | 
| 
        バックエンドに接続したアプリケーションの名前です。 | 
| 
        バックエンドに接続したクライアントのIPアドレスです。 このフィールドがNULLである場合、これはクライアントがサーバマシン上のUnixソケット経由で接続されたか、自動バキュームなど内部プロセスであることを示しています。 | 
| 
        
 | 
| 
        
クライアントがバックエンドとの通信に使用するTCPポート番号、もしくはUnixソケットを使用する場合は | 
| 
        プロセスが開始した時刻です。 クライアントのバックエンドについては、クライアントがサーバに接続した時刻です。 | 
| 
        
プロセスの現在のトランザクションが開始した時刻です。活動中のトランザクションがない場合はNULLです。
現在の問い合わせがトランザクションの先頭である場合、この列は | 
| 
        
現在活動中の問い合わせが開始した時刻です。もし | 
| 
        
 | 
| 
        バックエンドが待機しているイベントがあれば、その型、なければNULLとなります。 表 28.4を参照してください。 | 
| 
        バックエンドが現在待機している場合は待機イベント名、そうでなければNULLとなります。 表 28.5から表 28.13までを参照してください。 | 
| 
        現在のバックエンドの総体的な状態です。 以下のいずれかの値を取ることができます。 
 
 | 
| 
        もしあれば、このバックエンドの最上位のトランザクション識別子です。 | 
| 
        
現在のバックエンドの | 
| 
       
バックエンドの直近の問い合わせ識別子です。
 | 
| 
        
バックエンドの最も最近の問い合わせテキストです。
 | 
| 
        
現在のバックエンドの種別です。
取り得る値は | 
wait_eventとstate列は独立しています。
バックエンドがactive状態である場合、いくつかのイベントではwaitingかもしれませんし、そうでないかもしれません。
状態がactiveであり、wait_eventがNULLでない場合、問い合わせは実行中ですが、システム内のどこかでブロックされていることを意味します。
   
表28.4 待機イベント型
| 待機イベント型 | 説明 | 
|---|---|
| Activity | サーバプロセスはアイドル状態です。
このイベント型はプロセスがメインの処理ループ内で活動を待機していることを示します。 wait_eventによりその待機点が特定できます。
表 28.5を参照してください。 | 
| BufferPin | サーバプロセスは、データバッファに排他的アクセスをするために待機しています。 バッファピン待機は、他のプロセスが該当のバッファから最後に読み込んだデータのオープンカーソルを保持している場合に長引かされることがあります。 表 28.6を参照してください。 | 
| Client | サーバプロセスはユーザアプリケーションに接続しているソケット上での活動を待機しています。
それゆえ、サーバはその内部プロセスとは無関係の何かが起きることを期待しています。 wait_eventによりその待機点が特定できます。表 28.7を参照してください。 | 
| Extension | サーバプロセスは拡張モジュールにより定義された条件を待機しています。 表 28.8を参照してください。 | 
| IO | サーバプロセスは入出力が完了するのを待機しています。 wait_eventによりその待機点が特定できます。表 28.9を参照してください。 | 
| IPC | サーバプロセスは、他のサーバプロセスとの相互作用を待機しています。 wait_eventによりその待機点が特定できます。表 28.10を参照してください。 | 
| Lock | サーバプロセスは重量ロックを待機しています。
ロックマネージャロックや単にロックとしても知られている重量ロックは、主にテーブルのようなSQLで可視なオブジェクトを保護します。
しかし、それらはリレーション拡張のような、なんらかの内部操作のために相互排他を確実にするためにも使用されます。 wait_eventは、待たせているロックの型を識別します。
表 28.11を参照してください。 | 
| LWLock | サーバプロセスは軽量ロックを待機しています。
ほとんどのこのようなロックは、共有メモリ内の特定のデータ構造を保護します。 wait_eventには軽量ロックの目的を特定する名前が入ります。
(特定の名前がついたロックもあれば、似たような目的のロックのグループの一部となっているものもあります。)
表 28.12を参照してください。 | 
| Timeout | サーバプロセスはタイムアウトが満了するのを待機しています。 wait_eventによりその待機点が特定できます。表 28.13を参照してください。 | 
表28.5 Activity型の待機イベント
| Activity待機イベント | 説明 | 
|---|---|
| ArchiverMain | アーカイバプロセスのメインループ内で待機しています。 | 
| AutoVacuumMain | 自動バキュームのランチャプロセスのメインループ内で待機しています。 | 
| BgWriterHibernate | バックグラウンドライタプロセス内で待機し、休止状態になっています。 | 
| BgWriterMain | バックグラウンドライタプロセスのメインループ内で待機しています。 | 
| CheckpointerMain | チェックポインタプロセスのメインループ内で待機しています。 | 
| LogicalApplyMain | 論理レプリケーション適用プロセスのメインループ内で待機しています。 | 
| LogicalLauncherMain | 論理レプリケーションランチャプロセスのメインループ内で待機しています。 | 
| PgStatMain | 統計情報収集プロセスのメインループ内で待機しています。 | 
| RecoveryWalStream | ストリーミングリカバリ中に、起動プロセスのメインループ内でWALが到着するのを待機しています。 | 
| SysLoggerMain | sysloggerプロセスのメインループ内で待機しています。 | 
| WalReceiverMain | WAL受信プロセスのメインループ内で待機しています。 | 
| WalSenderMain | WAL送信プロセスのメインループ内で待機しています。 | 
| WalWriterMain | WAL書き込みプロセスのメインループ内で待機しています。 | 
表28.6 BufferPin型の待機イベント
| BufferPin待機イベント | 説明 | 
|---|---|
| BufferPin | バッファ上の排他ピンを獲得するのを待機しています。 | 
表28.7 Client型の待機イベント
| Client待機イベント | 説明 | 
|---|---|
| ClientRead | クライアントからのデータの読み込みを待機しています。 | 
| ClientWrite | クライアントへのデータの書き込みを待機しています。 | 
| GSSOpenServer | GSSAPIセッションを確立する際にクライアントからのデータ読み込みを待機しています。 | 
| LibPQWalReceiverConnect | WAL受信プロセス内でリモートサーバへの接続が確立するのを待機しています。 | 
| LibPQWalReceiverReceive | WAL受信プロセス内でリモートサーバからデータを受信するのを待機しています。 | 
| SSLOpenServer | 接続試行中にSSLを待機しています。 | 
| WalSenderWaitForWAL | WAL送信プロセス内でWALがフラッシュされるのを待機しています。 | 
| WalSenderWriteData | WAL送信プロセス内でWAL受信者からの応答を処理している時に、何らかの活動を待機しています。 | 
表28.8 Extension型の待機イベント
| Extension待機イベント | 説明 | 
|---|---|
| Extension | 拡張内で待機しています。 | 
表28.9 IO型の待機イベント
| IO待機イベント | 説明 | 
|---|---|
| BaseBackupRead | ベースバックアップがファイルから読み取るのを待機しています。 | 
| BufFileRead | バッファファイルからの読み取りを待機しています。 | 
| BufFileWrite | バッファファイルへの書き込みを待機しています。 | 
| BufFileTruncate | バッファファイルが切り捨てられるのを待機しています。 | 
| ControlFileRead | pg_controlファイルからの読み取りを待機しています。 | 
| ControlFileSync | pg_controlファイルが永続的ストレージに到達するのを待機しています。 | 
| ControlFileSyncUpdate | pg_controlファイルの更新が永続的ストレージに到達するのを待機しています。 | 
| ControlFileWrite | pg_controlファイルへの書き込みを待機しています。 | 
| ControlFileWriteUpdate | pg_controlファイルの更新の書き込みを待機しています。 | 
| CopyFileRead | ファイルコピーの操作の間、読み込みを待機しています。 | 
| CopyFileWrite | ファイルコピーの操作の間、書き込みを待機しています。 | 
| DSMFillZeroWrite | 動的共有メモリの背後のファイルにゼロのバイトを書き込むのを待機しています。 | 
| DataFileExtend | リレーションのデータファイルが拡張されるのを待機しています。 | 
| DataFileFlush | リレーションのデータファイルが永続的ストレージに到達するのを待機しています。 | 
| DataFileImmediateSync | リレーションのデータファイルが永続的ストレージに即座に同期されるのを待機しています。 | 
| DataFilePrefetch | リレーションのデータファイルからの非同期プリフェッチを待機しています。 | 
| DataFileRead | リレーションのデータファイルからの読み込みを待機しています。 | 
| DataFileSync | リレーションのデータファイルへの変更が永続的ストレージに到達するのを待機しています。 | 
| DataFileTruncate | リレーションのデータファイルが切り詰められるのを待機しています。 | 
| DataFileWrite | リレーションのデータファイルへの書き込みを待機しています。 | 
| LockFileAddToDataDirRead | データディレクトリのロックファイルに行を追加する間の読み込みを待機しています。 | 
| LockFileAddToDataDirSync | データディレクトリのロックファイルに行を追加する間、データが永続的ストレージに到達するのを待機しています。 | 
| LockFileAddToDataDirWrite | データディレクトリのロックファイルに行を追加する間の書き込みを待機しています。 | 
| LockFileCreateRead | データディレクトリのロックファイルを作成する間の読み込みを待機しています。 | 
| LockFileCreateSync | データディレクトリのロックファイルを作成する間、データが永続的ストレージに到達するのを待機しています。 | 
| LockFileCreateWrite | データディレクトリのロックファイルを作成する間の書き込みを待機しています。 | 
| LockFileReCheckDataDirRead | データディレクトリのロックファイルを再検査する間の読み込みを待機しています。 | 
| LogicalRewriteCheckpointSync | チェックポイントの間に、論理的な再書き込みのマッピングが永続的ストレージに到達するのを待機しています。 | 
| LogicalRewriteMappingSync | 論理的な再書き込みの間に、マッピングデータが永続的ストレージに到達するのを待機しています。 | 
| LogicalRewriteMappingWrite | 論理的な再書き込みの間に、マッピングデータの書き込みを待機しています。 | 
| LogicalRewriteSync | 論理的な再書き込みのマッピングが永続的ストレージに到達するのを待機しています。 | 
| LogicalRewriteTruncate | 論理的な再書き込みの際にマッピングデータが切り詰められるのを待機しています。 | 
| LogicalRewriteWrite | 論理的な再書き込みのマッピングの書き込みを待機しています。 | 
| RelationMapRead | リレーションのマップファイルの読み込みを待機しています。 | 
| RelationMapSync | リレーションのマップファイルが永続的ストレージに到達するのを待機しています。 | 
| RelationMapWrite | リレーションのマップファイルの書き込みを待機しています。 | 
| ReorderBufferRead | 並べ替えのバッファ管理の間に読み込みを待機しています。 | 
| ReorderBufferWrite | 並べ替えのバッファ管理の間に書き込みを待機しています。 | 
| ReorderLogicalMappingRead | 並べ替えのバッファ管理の間に、論理マッピングの読み込みを待機しています。 | 
| ReplicationSlotRead | レプリケーションスロットの制御ファイルからの読み込みを待機しています。 | 
| ReplicationSlotRestoreSync | レプリケーションスロットの制御ファイルをメモリにリストアする間、それが永続的ストレージに到達するのを待機しています。 | 
| ReplicationSlotSync | レプリケーションスロットの制御ファイルが永続的ストレージに到達するのを待機しています。 | 
| ReplicationSlotWrite | レプリケーションスロットの制御ファイルへの書き込みを待機しています。 | 
| SLRUFlushSync | チェックポイントまたはデータベースのシャットダウン中に、SLRUデータが永続的ストレージに到達するのを待機しています。 | 
| SLRURead | SLRUページの読み込みを待機しています。 | 
| SLRUSync | ページ書き込みの後、SLRUデータが永続的ストレージに到達するのを待機しています。 | 
| SLRUWrite | SLRUページの書き込みを待機しています。 | 
| SnapbuildRead | シリアライズされた通時的カタログのスナップショットの読み込みを待機しています。 | 
| SnapbuildSync | シリアライズされた通時的カタログのスナップショットが永続的ストレージに到達するのを待機しています。 | 
| SnapbuildWrite | シリアライズされた通時的カタログのスナップショットの書き込みを待機しています。 | 
| TimelineHistoryFileSync | ストリーミングレプリケーションを経由して受け取ったタイムラインの履歴ファイルが永続的ストレージに到達するのを待機しています。 | 
| TimelineHistoryFileWrite | ストリーミングレプリケーションを経由して受け取ったタイムラインの履歴ファイルの書き込みを待機しています。 | 
| TimelineHistoryRead | タイムラインの履歴ファイルの読み込みを待機しています。 | 
| TimelineHistorySync | 新しく作成されたタイムラインの履歴ファイルが永続的ストレージに到達するのを待機しています。 | 
| TimelineHistoryWrite | 新しく作成されたタイムラインの履歴ファイルの書き込みを待機しています。 | 
| TwophaseFileRead | 二相の状態ファイルの読み込みを待機しています。 | 
| TwophaseFileSync | 二相の状態ファイルが永続的ストレージに到達するのを待機しています。 | 
| TwophaseFileWrite | 二相の状態ファイルの書き込みを待機しています。 | 
| WALBootstrapSync | ブートストラップ時にWALが永続的ストレージに到達するのを待機しています。 | 
| WALBootstrapWrite | ブートストラップ時にWALページの書き込みを待機しています。 | 
| WALCopyRead | 既存のWALセグメントをコピーして新しいWALセグメントを作成する時に読み込みを待機しています。 | 
| WALCopySync | 既存のWALセグメントをコピーして作成した新しいWALセグメントが永続的ストレージに到達するのを待機しています。 | 
| WALCopyWrite | 既存のWALセグメントをコピーして新しいWALセグメントを作成する時に書き込みを待機しています。 | 
| WALInitSync | 新しく初期化されたWALファイルが永続的ストレージに到達するのを待機しています。 | 
| WALInitWrite | 新しいWALファイルを初期化している時に書き込みを待機しています。 | 
| WALRead | WALファイルからの読み込みを待機しています。 | 
| WALSenderTimelineHistoryRead | WAL送信サーバのタイムラインコマンドで、タイムラインの履歴ファイルの読み込みを待機しています。 | 
| WALSync | WALファイルが永続的ストレージに達するのを待機しています。 | 
| WALSyncMethodAssign | 新しいWALの同期方法を割り当てている時にデータが永続的ストレージに到達するのを待機しています。 | 
| WALWrite | WALファイルへの書き込みを待機しています。 | 
| LogicalChangesRead | 論理変更ファイルからの読み込みを待機しています。 | 
| LogicalChangesWrite | 論理変更ファイルへの書き込みを待機しています。 | 
| LogicalSubxactRead | 論理サブトランザクションファイルからの読み込みを待機しています。 | 
| LogicalSubxactWrite | 論理サブトランザクションファイルへの書き込みを待機しています。 | 
表28.10 IPC型の待機イベント
| IPC待機イベント | 説明 | 
|---|---|
| AppendReady | Appendプランノードのサブプランノードの準備が整うのを待機しています。 | 
| BackendTermination | 他のバックエンドの終了を待機しています。 | 
| BackupWaitWalArchive | バックアップに必要なWALファイルがアーカイブに成功するのを待機しています。 | 
| BgWorkerShutdown | バックグラウンドワーカがシャットダウンするのを待機しています。 | 
| BgWorkerStartup | バックグラウンドワーカが起動するのを待機しています。 | 
| BtreePage | パラレルB-treeスキャンを継続するのに必要なページ番号が利用可能になるのを待機しています。 | 
| BufferIO | バッファI/Oが完了するのを待機しています。 | 
| CheckpointDone | チェックポイントが完了するのを待機しています。 | 
| CheckpointStart | チェックポイントが開始するのを待機しています。 | 
| ExecuteGather | Gather計画ノードの実行時に子プロセスの活動を待機しています。 | 
| HashBatchAllocate | 選ばれたパラレルハッシュ参加者がハッシュテーブルを獲得するのを待機しています。 | 
| HashBatchElect | ハッシュテーブルを獲得するパラレルハッシュ参加者を選ぶのを待機しています。 | 
| HashBatchLoad | 他のパラレルハッシュ参加者がハッシュテーブルのロードを完了させるのを待機しています。 | 
| HashBuildAllocate | 選ばれたパラレルハッシュ参加者が初期ハッシュテーブルを獲得するのを待機しています。 | 
| HashBuildElect | 初期ハッシュテーブルを獲得するパラレルハッシュ参加者を選ぶのを待機しています。 | 
| HashBuildHashInner | 他のパラレルハッシュ参加者がインナーリレーションのハッシュを完了させるのを待機しています。 | 
| HashBuildHashOuter | 他のパラレルハッシュ参加者がアウターリレーションのパーティショニングを完了させるのを待機しています。 | 
| HashGrowBatchesAllocate | 選ばれたパラレルハッシュ参加者が追加バッチを獲得するのを待機しています。 | 
| HashGrowBatchesDecide | 将来のバッチの増加を決めるパラレルハッシュ参加者を選ぶのを待機しています。 | 
| HashGrowBatchesElect | 追加バッチを獲得するパラレルハッシュ参加者を選ぶのを待機しています。 | 
| HashGrowBatchesFinish | 選ばれたパラレルハッシュ参加者が将来のバッチの増加を決めるのを待機しています。 | 
| HashGrowBatchesRepartition | 他のパラレルハッシュ参加者がリパーティショニングを完了させるのを待機しています。 | 
| HashGrowBucketsAllocate | 選ばれたパラレルハッシュ参加者が追加バケット獲得を完了するのを待機しています。 | 
| HashGrowBucketsElect | 追加バケットを獲得するパラレルハッシュ参加者を選ぶのを待機しています。 | 
| HashGrowBucketsReinsert | 他のパラレルハッシュ参加者が新しいバケットに対するタプル挿入を完了させるのを待機しています。 | 
| LogicalSyncData | 論理レプリケーションのリモートサーバが最初のテーブル同期のためのデータを送信するのを待機しています。 | 
| LogicalSyncStateChange | 論理レプリケーションのリモートサーバが状態を変更するのを待機しています。 | 
| MessageQueueInternal | 他のプロセスが共有メッセージキューにアタッチされるのを待機しています。 | 
| MessageQueuePutMessage | 共有メッセージキューにプロトコルのメッセージを書くのを待機しています。 | 
| MessageQueueReceive | 共有メッセージキューからバイトを受信するのを待機しています。 | 
| MessageQueueSend | 共有メッセージキューにバイトを送信するのを待機しています。 | 
| ParallelBitmapScan | パラレルビットマップスキャンが初期化されるのを待機しています。 | 
| ParallelCreateIndexScan | パラレル CREATE INDEXワーカがヒープスキャンを完了するのを待機しています。 | 
| ParallelFinish | パラレルワーカが計算を完了するのを待機しています。 | 
| ProcArrayGroupUpdate | グループリーダーが並列操作の最後にトランザクションIDをクリアするのを待機しています。 | 
| ProcSignalBarrier | バックエンドすべてでバリアイベントが処理されるのを待機しています。 | 
| Promote | スタンバイの昇格を待機しています。 | 
| RecoveryConflictSnapshot | バキュームクリーンアップに対するリカバリ競合の解決を待機しています。 | 
| RecoveryConflictTablespace | テーブル空間の削除に対するリカバリ競合の解決を待機しています。 | 
| RecoveryPause | リカバリが再開するのを待機しています。 | 
| ReplicationOriginDrop | レプリケーションオリジンが削除できるよう非活動状態になるのを待機しています。 | 
| ReplicationSlotDrop | レプリケーションスロットが削除できるよう非活動状態になるのを待機しています。 | 
| SafeSnapshot | READ ONLY DEFERRABLEのトランザクションに対する有効なスナップショットの獲得を待機しています。 | 
| SyncRep | 同期レプリケーション中に、リモートサーバからの確認を待機しています。 | 
| WalReceiverExit | WALレシーバが終了するのを待機しています。 | 
| WalReceiverWaitStart | ストリーミングレプリケーションの初期データを送信するための起動プロセスを待機しています。 | 
| XactGroupUpdate | グループリーダーが並列操作の最後にトランザクション状態を更新するのを待機しています。 | 
表28.11 Lock型の待機イベント
| Lock待機イベント | 説明 | 
|---|---|
| advisory | 勧告的ユーザロックを獲得するのを待機しています。 | 
| extend | リレーションを拡張するのを待機しています。 | 
| frozenid | pg_database.datfrozenxidとpg_database.datminmxidを更新するのを待機しています。 | 
| object | 非リレーションデータベースオブジェクト上のロックを獲得するのを待機しています。 | 
| page | リレーションのページ上のロックを獲得するのを待機しています。 | 
| relation | リレーション上のロックを獲得するのを待機しています。 | 
| spectoken | 投機的挿入ロックを獲得するのを待機しています。 | 
| transactionid | トランザクションが終了するのを待機しています。 | 
| tuple | タプル上のロックを獲得するのを待機しています。 | 
| userlock | ユーザロックを獲得するのを待機しています。 | 
| virtualxid | 仮想トランザクションIDロックを獲得するのを待機しています。 | 
表28.12 LWLock型の待機イベント
| LWLock待機イベント | 説明 | 
|---|---|
| AddinShmemInit | 共有メモリの拡張の領域確保を管理するのを待機しています。 | 
| AutoFile | postgresql.auto.confファイルを更新するのを待機しています。 | 
| Autovacuum | 自動バキュームワーカの現在の状態の読み込み、または更新を待機しています。 | 
| AutovacuumSchedule | 自動バキューム対象として選定されたテーブルが、まだバキューム処理が必要であることを確認するのを待機しています。 | 
| BackgroundWorker | バックグラウンドワーカ状態の読み込み、または更新を待機しています。 | 
| BtreeVacuum | B-treeインデックスのバキュームに関連した情報の読み込み、または更新を待機しています。 | 
| BufferContent | メモリ内のデータページへアクセスするのを待機しています。 | 
| BufferMapping | データブロックをバッファプール内のバッファと関連付けるのを待機しています。 | 
| CheckpointerComm | fsyncリクエストを管理するのを待機しています。 | 
| CommitTs | トランザクションコミットタイムスタンプのために設定された最新の値の読み込み、または更新を待機しています。 | 
| CommitTsBuffer | コミットタイムスタンプSLRUバッファでのI/Oを待機しています。 | 
| CommitTsSLRU | コミットタイムスタンプSLRUキャッシュにアクセスするのを待機しています。 | 
| ControlFile | pg_controlファイルの読み込みもしくは更新、または新しいWALファイルの作成を待機しています。 | 
| DynamicSharedMemoryControl | 動的共有メモリの割り当て情報の読み込み、または更新を待機しています。 | 
| LockFastPath | プロセスのファストパスロック情報の読み込み、または更新を待機しています。 | 
| LockManager | 「重量」ロックに関する情報の読み込み、または更新を待機しています。 | 
| LogicalRepWorker | 論理レプリケーションワーカの状態の読み込み、または更新を待機しています。 | 
| MultiXactGen | 共有マルチトランザクション状態の読み込み、または更新を待機しています。 | 
| MultiXactMemberBuffer | マルチトランザクションメンバSLRUバッファでのI/Oを待機しています。 | 
| MultiXactMemberSLRU | マルチトランザクションメンバSLRUキャッシュにアクセスするのを待機しています。 | 
| MultiXactOffsetBuffer | マルチトランザクションオフセットSLRUバッファでのI/Oを待機しています。 | 
| MultiXactOffsetSLRU | マルチトランザクションオフセットSLRUキャッシュにアクセスするのを待機しています。 | 
| MultiXactTruncation | マルチトランザクション情報の読み込み、または切り詰めを待機しています。 | 
| NotifyBuffer | NOTIFYメッセージSLRUバッファでのI/Oを待機しています。 | 
| NotifyQueue | NOTIFYメッセージの読み込み、または更新を待機しています。 | 
| NotifyQueueTail | NOTIFYメッセージストレージの制限が更新されるのを待機しています。 | 
| NotifySLRU | NOTIFYメッセージSLRUキャッシュにアクセスするのを待機しています。 | 
| OidGen | 新しいOIDを割り当てるのを待機しています。 | 
| OldSnapshotTimeMap | 古いスナップショット制御情報の読み込み、または更新を待機しています。 | 
| ParallelAppend | パラレルアペンド計画を実行中に次のサブプランの選択を待機しています。 | 
| ParallelHashJoin | パラレルハッシュ結合計画を実行中に、ワーカの同期を待機しています。 | 
| ParallelQueryDSA | パラレルクエリの動的共有メモリ割り当てを待機しています。 | 
| PerSessionDSA | パラレルクエリの動的共有メモリ割り当てを待機しています。 | 
| PerSessionRecordType | 複合型に関するパラレルクエリの情報にアクセスするのを待機しています。 | 
| PerSessionRecordTypmod | 匿名レコード型を特定する型修飾子に関するパラレルクエリの情報にアクセスするのを待機しています。 | 
| PerXactPredicateList | パラレルクエリの間に、現在のシリアライザブルトランザクションによって保持された述語ロックの一覧へアクセスするのを待機しています。 | 
| PredicateLockManager | シリアライザブルトランザクションによって使われる述語ロックの情報にアクセスするのを待機しています。 | 
| ProcArray | (典型的には、スナップショットを得たりセッションのトランザクションIDを報告するために)共有のプロセスごとのデータ構造にアクセスするのを待機しています。 | 
| RelationMapping | (特定のシステムカタログのファイルノードの割り当てを追跡するのに使われる) pg_filenode.mapファイルの読み込み、または更新を待機しています。 | 
| RelCacheInit | pg_internal.initリレーションキャッシュ初期化ファイルの読み込み、または更新を待機しています。 | 
| ReplicationOrigin | レプリケーションオリジンの作成、削除、または使用を待機しています。 | 
| ReplicationOriginState | あるレプリケーションオリジンの進捗の読み込み、または更新を待機しています。 | 
| ReplicationSlotAllocation | レプリケーションスロットの割り当て、または解放を待機しています。 | 
| ReplicationSlotControl | レプリケーションスロット状態の読み込み、または更新を待機しています。 | 
| ReplicationSlotIO | レプリケーションスロットでのI/Oを待機しています。 | 
| SerialBuffer | シリアライザブルトランザクション競合SLRUバッファでのI/Oを待機しています | 
| SerializableFinishedList | 完了したシリアライザブルトランザクションの一覧へアクセスするのを待機しています。 | 
| SerializablePredicateList | シリアライザブルトランザクションによって保持された述語ロックの一覧へアクセスするのを待機しています。 | 
| SerializableXactHash | シリアライザブルトランザクションに関する情報の読み込み、または更新を待機しています。 | 
| SerialSLRU | シリアライザブルトランザクション競合SLRUキャッシュにアクセスするのを待機しています。 | 
| SharedTidBitmap | パラレルビットマップインデックススキャンの間に、共有TIDにアクセスするのを待機しています。 | 
| SharedTupleStore | パラレルクエリの間に共有タプルストアにアクセスするのを待機しています。 | 
| ShmemIndex | 共有メモリ内に領域を発見する、もしくは割り当てるのを待機しています。 | 
| SInvalRead | 共有カタログ無効化キューからメッセージを取り出すのを待機しています。 | 
| SInvalWrite | 共有カタログ無効化キューにメッセージを追加するのを待機しています。 | 
| SubtransBuffer | サブトランザクションSLRUバッファのI/Oを待機しています。 | 
| SubtransSLRU | サブトランザクションSLRUキャッシュにアクセスするのを待機しています。 | 
| SyncRep | 同期レプリケーションの状態に関する情報を読み込む、または更新するの待機しています。 | 
| SyncScan | 同期テーブルスキャンの開始位置を選ぶのを待機しています。 | 
| TablespaceCreate | テーブルスペースの作成、または削除を待機しています。 | 
| TwoPhaseState | プリペアドトランザクションの状態の読み込み、または更新を待機しています。 | 
| WALBufMapping | WALバッファ内のページの置き換えを待機しています。 | 
| WALInsert | WALデータをメモリバッファに挿入するのを待機しています。 | 
| WALWrite | WALバッファがディスクに書き込まれるのを待機しています。 | 
| WrapLimitsVacuum | トランザクションIDとマルチトランザクションの消費の制限が更新されるのを待機しています。 | 
| XactBuffer | トランザクション状態SLRUバッファでのI/Oを待機しています。 | 
| XactSLRU | トランザクション状態SLRUキャッシュにアクセスするのを待機しています。 | 
| XactTruncation | pg_xact_statusを実行する、またはその関数で利用可能な最古のトランザクションIDを更新するのを待機しています。 | 
| XidGen | 新しいトランザクションIDを割り当てるのを待機しています。 | 
拡張は表 28.12に示す一覧にLWLock型を追加できます。
拡張によって割り当てられた名前がすべてのサーバプロセスでは利用可能でない場合があります。そのためLWLock待機イベントは、拡張が割り当てた名前ではなく単に「extension」と報告されるかもしれません。
    
表28.13 Timeout型の待機イベント
| Timeout待機イベント | 説明 | 
|---|---|
| BaseBackupThrottle | スロットル活動時にベースバックアップで待機しています。 | 
| CheckpointWriteDelay | チェックポイント実行中の書き込みの間で待機しています。 | 
| PgSleep | pg_sleepまたは同系列の関数を呼び出したため待機しています。 | 
| RecoveryApplyDelay | 遅延設定によりリカバリ時のWAL適用を待機しています。 | 
| RecoveryRetrieveRetryInterval | WALデータがまだあらゆる種類のソース( pg_wal、アーカイブまたはストリーム)から得られない時にリカバリで待機しています。 | 
| RegisterSyncRequest | 要求キューがいっぱいのため、同期要求をチェックポインターに送信する間、待機しています。 | 
| VacuumDelay | コストに基づくバキューム遅延ポイントで待機しています。 | 
以下に、待機イベントが表示される例を示します。
SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event is NOT NULL; pid | wait_event_type | wait_event ------+-----------------+------------ 2540 | Lock | relation 6644 | LWLock | ProcArray (2 rows)
pg_stat_replication
pg_stat_replicationビューには、WAL送信プロセス毎に、送信処理に接続したスタンバイサーバへのレプリケーションに関する統計情報を示す1行を保持します。
直接接続されたスタンバイサーバのみが一覧表示されます。
下流のスタンバイサーバに関する情報はありません。
  
表28.14 pg_stat_replicationビュー
| 列 型 説明 | 
|---|
| 
        WAL送信プロセスのプロセスIDです。 | 
| 
        WAL送信プロセスにログインしたユーザのOIDです。 | 
| 
        WAL送信プロセスにログインしたユーザの名前です。 | 
| 
        WAL送信処理に接続したアプリケーションの名前です。 | 
| 
        WAL送信処理に接続したクライアントのIPアドレスです。 このフィールドがNULLの場合、クライアントがサーバマシン上のUnixソケット経由で接続したことを示します。 | 
| 
        
 | 
| 
        
クライアントがWAL送信処理との通信に使用するTCPポート番号、もしUnixソケットを使用する場合は | 
| 
        プロセスが開始、つまりクライアントがWAL送信処理に接続した時刻です。 | 
| 
        
hot_standby_feedbackにより報告されたこのスタンバイの | 
| 
        WAL送信サーバの現在の状態です。 取り得る値は以下の通りです。 
 
 | 
| 
        この接続で送信された最後の先行書き込みログの位置です。 | 
| 
        このスタンバイサーバによってディスクに書き出された最後の先行書き込みログの位置です。 | 
| 
        このスタンバイサーバによってディスクに吐き出された最後の先行書き込みログの位置です。 | 
| 
        このスタンバイサーバ上のデータベースに再生された最後の先行書き込みログの位置です。 | 
| 
        
最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出した(が、まだ吐き出したり適用したりしていない)ことの通知を受け取るまでの経過時間です。
このサーバが同期スタンバイとして設定されているとして、コミット時に | 
| 
        
最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出して吐き出した(が、まだ適用していない)ことの通知を受け取るまでの経過時間です。
このサーバが同期スタンバイとして設定されているとして、コミット時に | 
| 
        
最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出し、吐き出し、そして適用したことの通知を受け取るまでの経過時間です。
このサーバが同期スタンバイとして設定されているとして、コミット時に | 
| 
        優先度に基づく同期レプリケーションで、このスタンバイサーバが同期スタンバイとして選択される優先度です。 クォーラムに基づく同期レプリケーションでは効果がありません。 | 
| 
        このスタンバイサーバの同期状態です。 取り得る値は以下の通りです。 
 
 | 
| 
        スタンバイサーバから受け取った最後の応答メッセージの送信時刻です。 | 
pg_stat_replicationビューで報告される経過時間は、最近のWALが書き込まれ、吐き出され、再生されるのに要した時間の測定結果であり、また、送信サーバがそれを知るためのものです。
リモートサーバが同期スタンバイとして設定されている場合、これらの時間は、同期コミットの各レベルによって引き起こされた(あるいは引き起こされたであろう)コミットの遅延を表します。
非同期スタンバイの場合は、replay_lag列は最近のトランザクションが問い合わせに対して可視になったときまでの遅延を近似します。
スタンバイサーバが送信サーバに完全に追いつき、WALの活動がなくなった状態のときは、最も直近に測定された経過時間が短い間、表示され続け、その後はNULLとなります。
  
経過時間は物理レプリケーションの場合は自動的に機能します。 ロジカルデコーディングのプラグインはオプションで追跡メッセージを発することができますが、そうしなければ追跡機能は単にNULLの経過時間を表示します。
報告される経過時間は、現在の再生速度の前提でスタンバイが送信サーバに追いつくのに要する時間を予測するものではありません。
そのようなシステムでは、新しいWALが生成されている間は類似した時間を示しますが、送信サーバがアイドル状態になると異なるものになるでしょう。
特に、スタンバイが完全に追いついたとき、pg_stat_replicationは、一部のユーザが期待するゼロではなく、最も最近に報告されたWAL位置を書き込み、吐き出し、再生するのに要した時間を示します。
これは最近の書き込みトランザクションについて同期コミットおよびトランザクションの可視性の遅延を測定するという目的と首尾一貫しています。
経過時間について異なるモデルを期待するユーザの混乱を抑えるため、完全に再生されてアイドルになったシステムでは、経過時間の列は短い時間の後、NULLに戻ります。
監視システムでは、これをデータなしとする、ゼロとする、あるいは最後の既知の値を表示し続けるという選択をすることになります。
   
pg_stat_replication_slots
pg_stat_replication_slotsビューには、論理レプリケーションスロットごとに1行が含まれ、その使用状況に関する統計情報が表示されます。
  
表28.15 pg_stat_replication_slotsビュー
| 列 型 説明 | 
|---|
| 
         クラスタ全体で一意なレプリケーションスロットの識別子です。 | 
| 
         
WALからの変更をデコードするために論理デコードによって使用されるメモリが | 
| 
         このスロットのWALから変更をデコードしている間に、トランザクションがディスクにあふれた回数です。 このカウンタは、トランザクションがあふれるたびに増分され、同じトランザクションが複数回あふれることもあります。 | 
| 
         
このスロットのWALからの変更をデコード実行している間に、ディスクにあふれたデコード済みトランザクションデータ量です。
このカウンタと他のあふれカウンタは、論理デコード中に発生したI/Oを測定し | 
| 
         
このスロットのWALからの変更をデコードするために論理デコードが使用するメモリが | 
| 
         このスロットのWALからの変更をデコードしている間に、進行中のトランザクションがデコード出力プラグインにストリーミングされた回数です。 このカウンタは、トランザクションがストリーミングされるたびに増分され、同じトランザクションが複数回ストリーミングされる可能性があります。 | 
| 
         
このスロットのWALからの変更をデコードしている間に、進行中のトランザクションをデコード出力プラグインにストリーミングするためにデコードされたトランザクションデータ量です。
このカウンタと他のストリーミングカウンタは、 | 
| 
         このスロットのデコード出力プラグインに送信されたデコードされたトランザクション数です。 これはトップレベルのトランザクションのみ数えられ、サブトランザクションは数えられません。 これには、ストリーミングされたトランザクションやあふれたトランザクションが含まれることに注意してください。 | 
| 
         このスロットのWALからの変更をデコードしながら、デコード出力プラグインにトランザクションを送信するためにデコードされたトランザクションデータ量です。 これには、ストリーミングされたデータやあふれたデータが含まれることに注意してください。 | 
| 
         統計情報がリセットされた最終時刻です。 | 
pg_stat_wal_receiver
pg_stat_wal_receiverビューは、1行のみの形式で、受信サーバが接続したサーバからWALレシーバに関する統計情報を表示します。
  
表28.16 pg_stat_wal_receiverビュー
| 列 型 説明 | 
|---|
| 
        WALレシーバプロセスのプロセスIDです。 | 
| 
        WALレシーバプロセスの活動状態です。 | 
| 
        WALレシーバが開始された時に使われる先行書き込みログの最初の位置です。 | 
| 
        WALレシーバが開始された時に使われる初期タイムライン番号です。 | 
| 
        すでに受信し、ディスクに書き出されたもののまだフラッシュされていない先行書き込みログの最新位置です。 これはデータの完全性の確認のためには使うべきではありません。 | 
| 
        すでに受信し、ディスクにフラッシュされた先行書き込みログの最新位置です。 この列の初期値は、WALレシーバが開始された時に使用される、最初のログ位置です。 | 
| 
        受信済みでディスクにフラッシュされた先行書き込みログの最新位置のタイムライン番号です。 この列の初期値は、WALレシーバが開始された時に使用される、最初のログ位置のタイムライン番号です。 | 
| 
        オリジンWAL送信サーバから受け取った最後のメッセージの送信時刻です。 | 
| 
        オリジンWAL送信サーバから受け取った最後のメッセージの受信時刻です。 | 
| 
        オリジンWAL送信サーバに最後に報告された先行書き込みログ位置です。 | 
| 
        オリジンWAL送信サーバへ最新の先行書き込みログ位置が報告された時間です。 | 
| 
        WALレシーバによって使用されたレプリケーションスロット名です。 | 
| 
        
WALレシーバーが接続しているPostgreSQLインスタンスのホストです。
これはホスト名、IPアドレス、あるいはUNIXソケットで接続している場合はディレクトリのパスです。
(パスは、常に | 
| 
        WALレシーバーが接続しているPostgreSQLインスタンスのポート番号です。 | 
| 
        セキュリティに重要な値が難読化された文字列を含む、WALレシーバによって使用された接続文字列です。 | 
pg_stat_subscription
pg_stat_subscriptionビューには、各サブスクリプションのメインワーカに対して1行が含まれ(ワーカが実行中でないときはPIDがNULLになります)、さらにサブスクライブされたテーブルの初期データコピーを処理するワーカについて別の行があります。
  
表28.17 pg_stat_subscriptionビュー
| 列 型 説明 | 
|---|
| 
        サブスクリプションのOIDです。 | 
| 
        サブスクリプションの名前です。 | 
| 
        サブスクリプションのワーカプロセスのプロセスIDです。 | 
| 
        ワーカが同期しているリレーションのOIDです。メインの適用ワーカの場合はNULLです。 | 
| 
        最後に受け取った先行書き込みログ位置です。このフィールドの初期値は0です。 | 
| 
        オリジンWAL送信サーバから受け取った最後のメッセージの送信時刻です。 | 
| 
        オリジンWAL送信サーバから受け取った最後のメッセージの受信時刻です。 | 
| 
        オリジンWAL送信サーバに最後に報告された先行書き込みログ位置です。 | 
| 
        オリジンWAL送信サーバに最後の先行書き込みログ位置が報告された時刻です。 | 
pg_stat_ssl
pg_stat_sslビューは、バックエンドプロセスおよびWAL送信プロセスごとに1行を保持し、接続上でのSSLの使用に関する統計情報を示します。
pg_stat_activityまたはpg_stat_replicationとpid列で結合することで、接続に関するより詳細な情報を取得できます。
  
表28.18 pg_stat_sslビュー
| 列 型 説明 | 
|---|
| 
        バックエンドプロセスまたはWAL送信プロセスのプロセスIDです。 | 
| 
        この接続でSSLが使用されていれば真になります。 | 
| 
        使用されているSSLのバージョンです。この接続でSSLが使用されていなければNULLになります。 | 
| 
        使用されているSSL暗号の名前です。この接続でSSLが使用されていなければNULLになります。 | 
| 
        使用されている暗号アルゴリズムのビット数です。この接続でSSLが使用されていなければNULLになります。 | 
| 
        
使用されているクライアント証明書の識別名(DN)フィールドです。クライアント証明書が提供されなかった場合、およびこの接続でSSLが使用されていない場合はNULLになります。
このフィールドは、DNフィールドが | 
| 
        クライアント証明書のシリアル番号です。この接続でクライアント証明書が提供されていないかSSLが使われていない場合にNULLになります。 証明書のシリアル番号と証明書発行者の組み合わせは(発行者が誤ってシリアル番号を再使用しない限り)証明書を一意に識別します。 | 
| 
        
クライアント証明書の発行者のDNです。この接続でクライアント証明書が提供されていないかSSLが使われていない場合にNULLになります。
このフィールドは | 
pg_stat_gssapi
pg_stat_gssapiビューはバックエンド毎に1行で構成され、接続でのGSSAPI使用に関する情報を表示します。
接続に関する更なる詳細を得るため、これをpg_stat_activityやpg_stat_replicationとpid列で結合できます。
  
表28.19 pg_stat_gssapiビュー
| 列 型 説明 | 
|---|
| 
        バックエンドのプロセスIDです。 | 
| 
        この接続にGSSAPI認証が使われていたなら真です。 | 
| 
        
この接続の認証に使われているプリンシパルです。接続の認証にGSSAPIが使われていない場合にはNULLです。
このフィールドはプリンシパルが | 
| 
        この接続でGSSAPI暗号化が使われているなら真です。 | 
pg_stat_archiver
pg_stat_archiverビューは常に、クラスタのアーカイバプロセスに関するデータを含む1つの行を持ちます。
  
表28.20 pg_stat_archiverビュー
| 列 型 説明 | 
|---|
| 
        アーカイブに成功したWALファイルの数です。 | 
| 
        アーカイブに成功した最後のWALファイルの名前です。 | 
| 
        最後に成功したアーカイブ操作の時刻です。 | 
| 
        WALファイルのアーカイブに失敗した回数です。 | 
| 
        最後にアーカイブ操作に失敗したWALファイルの名前です。 | 
| 
        最後にアーカイブ操作に失敗した時刻です。 | 
| 
        統計情報がリセットされた最終時刻です。 | 
pg_stat_bgwriter
pg_stat_bgwriterビューは常に、クラスタのグローバルデータに関する1つの行を持ちます。
  
表28.21 pg_stat_bgwriterビュー
| 列 型 説明 | 
|---|
| 
        これまでに実行された、スケジュールされたチェックポイントの個数です。 | 
| 
        これまでに実行された、要求されたチェックポイントの個数です。 | 
| 
        チェックポイント処理におけるディスクにファイルを書き出す部分に費やされた、ミリ秒単位の総時間です。 | 
| 
        チェックポイント処理におけるディスクにファイルを同期する部分に費やされた、ミリ秒単位の総時間です。 | 
| 
        チェックポイント期間に書き出されたバッファ数です。 | 
| 
        バックグラウンドライタにより書き出されたバッファ数です。 | 
| 
        バックグラウンドライタが書き出したバッファ数が多過ぎたために、整理用スキャンを停止した回数です。 | 
| 
        バックエンドにより直接書き出されたバッファ数です。 | 
| 
        
バックエンドが独自に | 
| 
        割当られたバッファ数です。 | 
| 
        統計情報がリセットされた最終時刻です。 | 
pg_stat_wal
pg_stat_walビューは常に、クラスタのWAL活動状況のデータに関する1つの行を持ちます。
  
表28.22 pg_stat_walビュー
| 列 型 説明 | 
|---|
| 
        生成されたWALレコードの総数です。 | 
| 
        生成されたWALフルページイメージの総数です。 | 
| 
        生成されたWALのバイト単位の総量です。 | 
| 
        WALバッファが満杯になったため、WALデータがディスクに書き込まれた回数です。 | 
| 
        
WALバッファが | 
| 
        
WALファイルが | 
| 
        
 | 
| 
        
 | 
| 
        統計情報がリセットされた最終時刻です。 | 
pg_stat_database
pg_stat_databaseビューには、クラスタ内のデータベース毎に1行と加えて共有オブジェクトのための1行が含まれ、データベース全体の統計情報を示します。
  
表28.23 pg_stat_databaseビュー
| 列 型 説明 | 
|---|
| 
        データベースのOIDです。共有リレーションに属するオブジェクトについては0になります。 | 
| 
        
データベース名です。共有オブジェクトについては | 
| 
        
現在データベースに接続しているバックエンドの個数です。共有オブジェクトについては | 
| 
        データベース内でコミットされたトランザクション数です。 | 
| 
        データベース内でロールバックされたトランザクション数です。 | 
| 
        データベース内で読み取られたディスクブロック数です。 | 
| 
        バッファキャッシュに既にあることが分かっているためにディスクブロックの読み取りが不要だった回数です(これにはPostgreSQLのバッファキャッシュにおけるヒットのみが含まれ、オペレーティングシステムのファイルシステムキャッシュは含まれません)。 | 
| 
        データベース内の問い合わせで返された行数です。 | 
| 
        データベース内の問い合わせで取り出された行数です。 | 
| 
        データベース内の問い合わせで挿入された行数です。 | 
| 
        データベース内の問い合わせで更新された行数です。 | 
| 
        データベース内の問い合わせで削除された行数です。 | 
| 
        
データベース内のリカバリで競合したためキャンセルされた問い合わせ数です。
(競合はスタンバイサーバ上でのみ起こります。詳細については | 
| 
        データベース内の問い合わせによって書き出された一時ファイルの個数です。 一時ファイルが作成された理由(ソート処理やハッシュ処理)やlog_temp_filesの設定に関わらず、すべての一時ファイルが計上されます。 | 
| 
        データベース内の問い合わせによって一時ファイルに書き出されたデータ量です。 一時ファイルが作成された理由やlog_temp_filesの設定に関わらず、すべての一時ファイルが計上されます。 | 
| 
        データベース内で検知されたデッドロック数です。 | 
| 
        データベース(あるいは共有オブジェクト)内で検出されたデータページチェックサムの検査失敗数です。データチェックサムが無効の場合にはNULLです。 | 
| 
        データベース(または共有オブジェクト)内で最後にデータページチェックサムの検査失敗が検知された時刻です。データチェックサムが無効の場合にはNULLです。 | 
| 
        データベース内でバックエンドによりデータファイルブロックの読み取りに費やされた、ミリ秒単位の時間です(track_io_timingが有効な場合。そうでなければゼロです)。 | 
| 
        データベース内でバックエンドによりデータファイルブロックの書き出しに費やされた、ミリ秒単位の時間です(track_io_timingが有効な場合。そうでなければゼロです)。 | 
| 
        このデータベースでデータベースセッションに費やされた、ミリ秒単位の時間です(統計はセッションの状態が変化したときのみ更新されるため、セッションが長い間アイドル状態の場合、このアイドル時間は含まれません)。 | 
| 
        
このデータベースでSQL文実行に費やされた、ミリ秒単位の時間です(これは | 
| 
        
このデータベースでトランザクション中にアイドル状態であった、ミリ秒単位の時間です(これは | 
| 
        このデータベースに対して確立されたセッションの総数です。 | 
| 
        このデータベースに対するデータベースセッションのうち、クライアントとの接続が失われたために終了したセッションの数です。 | 
| 
        このデータベースに対するデータベースセッションのうち、致命的なエラーによって終了したセッションの数です。 | 
| 
        このデータベースに対するデータベースセッションのうち、オペレータの介入によって終了したセッションの数です。 | 
| 
        統計情報がリセットされた最終時刻です。 | 
pg_stat_database_conflicts
pg_stat_database_conflictsビューは、データベース毎に1行を保持し、スタンバイサーバでのリカバリと競合するためにキャンセルされた問い合わせに関するデータベース全体の統計情報を示します。
プライマリサーバでは競合は発生しませんので、スタンバイサーバ上の情報のみが保持されます。
  
表28.24 pg_stat_database_conflictsビュー
| 列 型 説明 | 
|---|
| 
        データベースのOIDです。 | 
| 
        データベースの名前です。 | 
| 
        データベースにおいて、削除されたテーブル空間のためにキャンセルされた問い合わせの個数です。 | 
| 
        データベースにおいて、ロック時間切れのためにキャンセルされた問い合わせの個数です。 | 
| 
        データベースにおいて、古いスナップショットのためにキャンセルされた問い合わせの個数です。 | 
| 
        データベースにおいて、ピンが付いたバッファのためにキャンセルされた問い合わせの個数です。 | 
| 
        データベースにおいて、デッドロックのためにキャンセルされた問い合わせの個数です。 | 
pg_stat_all_tables
pg_stat_all_tablesビューは現在のデータベース内のテーブル(TOASTテーブルを含む)毎に1行の形式で、特定のテーブルへのアクセスに関する統計情報を表示します。
pg_stat_user_tablesおよびpg_stat_sys_tablesビューにも同じ情報が含まれますが、それぞれユーザテーブルとシステムテーブルのみにフィルタされています。
  
表28.25 pg_stat_all_tablesビュー
| 列 型 説明 | 
|---|
| 
        テーブルのOIDです。 | 
| 
        テーブルが存在するスキーマの名前です。 | 
| 
        テーブルの名前です。 | 
| 
        テーブル上で初期化されたシーケンシャルスキャンの個数です。 | 
| 
        シーケンシャルスキャンによって取り出された有効行の個数です。 | 
| 
        テーブル上で開始されたインデックススキャンの実行回数です。 | 
| 
        インデックススキャンによって取り出された有効行の個数です。 | 
| 
        挿入された行数です。 | 
| 
        更新された行数です。(HOT更新された行数を含みます) | 
| 
        削除された行数です。 | 
| 
        HOT更新(つまりインデックスの更新を別途必要としない)された行数です。 | 
| 
        有効行数の推定値です。 | 
| 
        無効行数の推定値です。 | 
| 
        このテーブルが最後に解析されてから変更された行数の推定値です。 | 
| 
        このテーブルが最後にバキュームされてから挿入された行数の推定値です。 | 
| 
        
テーブルが手作業でバキュームされた最終時刻です( | 
| 
        自動バキュームデーモンによりテーブルがバキュームされた最終時刻です。 | 
| 
        テーブルが手作業で解析された最終時刻です。 | 
| 
        自動バキュームデーモンによりテーブルが解析された最終時刻です。 | 
| 
        
テーブルが手作業でバキュームされた回数です。( | 
| 
        テーブルが自動バキュームデーモンによりバキュームされた回数です。 | 
| 
        テーブルが手作業で解析された回数です。 | 
| 
        テーブルが自動バキュームデーモンによって解析された回数です。 | 
pg_stat_all_indexes
pg_stat_all_indexesビューは、現在のデータベース内のインデックス毎に、特定のインデックスへのアクセスに関する統計情報を示す1行を保持します。
pg_stat_user_indexesとpg_stat_sys_indexesも同じ情報を保持しますが、ユーザ向けのインデックスとシステム向けのインデックスに対する行のみを保持するようにフィルタ処理されています。
  
表28.26 pg_stat_all_indexesビュー
| 列 型 説明 | 
|---|
| 
        このインデックスに対応するテーブルのOIDです。 | 
| 
        インデックスのOIDです。 | 
| 
        インデックスが存在するスキーマの名前です。 | 
| 
        このインデックスに対応するテーブルの名前です。 | 
| 
        インデックスの名前です。 | 
| 
        インデックスに対して開始されたインデックススキャンの実行回数です。 | 
| 
        インデックスに対するスキャンにより返されたインデックス項目の個数です。 | 
| 
        インデックスを使用する単純なインデックススキャンによって取り出された有効テーブル行数です。 | 
単純なインデックススキャン、「ビットマップ」インデックススキャン、あるいはオプティマイザによりインデックスが使用されることがあります。
ビットマップスキャンでは、複数のインデックスの出力をANDやOR規則で組み合わせることができます。
このため、ビットマップスキャンが使用される場合、特定インデックスと個々のヒープ行の取り出しとを関連づけることが困難です。
したがってビットマップスキャンでは、使用したインデックスのpg_stat_all_indexes.idx_tup_read個数を増やし、そのテーブルのpg_stat_all_tables.idx_tup_fetch個数を増やしますが、pg_stat_all_indexes.idx_tup_fetchを変更しません。
オプティマイザもインデックスにアクセスし、提供された定数値がオプティマイザの統計情報に記録された範囲の外側にあるときに、それを検査します。
これはオプティマイザの統計情報が古いかもしれないからです。
  
idx_tup_readとidx_tup_fetch個数は、ビットマップスキャンがまったく使用されていない場合でも異なります。
idx_tup_readはインデックスから取り出したインデックス項目を計上し、idx_tup_fetchはテーブルから取り出した有効行を計上するからです。
インデックスを用いて無効行やまだコミットされていない行が取り出された場合やインデックスオンリースキャン法によりヒープの取り出しが回避された場合に、後者は減少します。
   
pg_statio_all_tables
pg_statio_all_tablesビューは現在のデータベース内のテーブル(TOASTテーブルを含む)ごとに、特定のテーブルのI/Oに関する統計情報を示す1行を保持します。
pg_statio_user_tablesとpg_statio_sys_tablesには同じ情報が保持されますが、ユーザテーブルとシステムテーブルに関する行のみを持つようにフィルタ処理がなされています。
  
表28.27 pg_statio_all_tablesビュー
| 列 型 説明 | 
|---|
| 
        テーブルのOIDです。 | 
| 
        テーブルが存在するスキーマの名前です。 | 
| 
        テーブルの名前です。 | 
| 
        テーブルから読み取られたディスクブロック数です。 | 
| 
        テーブル内のバッファヒット数です。 | 
| 
        テーブル上のすべてのインデックスから読み取られたディスクブロック数です。 | 
| 
        テーブル上のすべてのインデックス内のバッファヒット数です。 | 
| 
        テーブルのTOASTテーブル(もしあれば)から読み取られたディスクブロック数です。 | 
| 
        テーブルのTOASTテーブル(もしあれば)におけるバッファヒット数です。 | 
| 
        テーブルのTOASTテーブルのインデックス(もしあれば)から読み取られたディスクブロック数です。 | 
| 
        テーブルのTOASTテーブルのインデックス(もしあれば)におけるバッファヒット数です。 | 
pg_statio_all_indexes
pg_statio_all_indexesビューは、現在のデータベース内のインデックス毎に、特定のインデックスへのI/Oに関する統計情報を持つ1行を保持します。
pg_statio_user_indexesとpg_statio_sys_indexesも同じ情報を保持しますが、それぞれユーザ向けのインデックスとシステム向けのインデックスに対する行のみを保持するようにフィルタ処理されています。
  
表28.28 pg_statio_all_indexesビュー
| 列 型 説明 | 
|---|
| 
        このインデックスに対応するテーブルのOIDです。 | 
| 
        インデックスのOIDです。 | 
| 
        インデックスが存在するスキーマの名前です。 | 
| 
        このインデックスに対応するテーブルの名前です。 | 
| 
        インデックスの名前です。 | 
| 
        インデックスから読み取られたディスクブロック数です。 | 
| 
        インデックスにおけるバッファヒット数です。 | 
pg_statio_all_sequences
pg_statio_all_sequencesビューは現在のデータベース内のシーケンスごとに、特定シーケンスにおけるI/Oに関する統計情報を示す1行を保持します。
  
表28.29 pg_statio_all_sequencesビュー
| 列 型 説明 | 
|---|
| 
        シーケンスのOIDです。 | 
| 
        シーケンスが存在するスキーマの名前です。 | 
| 
        シーケンスの名前です。 | 
| 
        シーケンスから読み取られたディスクブロック数です。 | 
| 
        シーケンスにおけるバッファヒット数です。 | 
pg_stat_user_functions
pg_stat_user_functionsビューは追跡された関数毎に、その関数の実行に関する統計情報を1行保持します。
track_functionsパラメータは関数が追跡されるかどうかを正確に制御します。
  
表28.30 pg_stat_user_functionsビュー
| 列 型 説明 | 
|---|
| 
        関数のOIDです。 | 
| 
        関数が存在するスキーマの名前です。 | 
| 
        関数の名前です。 | 
| 
        関数が呼び出された回数です。 | 
| 
        関数とその関数から呼び出されるその他の関数で費やされた、ミリ秒単位の総時間です。 | 
| 
        その関数から呼び出されるその他の関数で費やされた時間を含まない、関数自身で費やされた、ミリ秒単位の総時間です。 | 
pg_stat_slru
PostgreSQLはSLRU(simple least-recently-used)キャッシュ経由で特定のディスク上の情報にアクセスします。
pg_stat_slruビューは、追跡されたSLRUキャッシュ毎にキャッシュされたページへのアクセスに関する統計情報を1行保持します。
  
表28.31 pg_stat_slruビュー
| 列 型 説明 | 
|---|
| 
        SLRUの名前です。 | 
| 
        初期化中にゼロにされたブロックの数です。 | 
| 
        SLRUに既にあることが分かっているためにディスクブロックの読み取りが不要だった回数です(これにはSLRUにおけるヒットのみが含まれ、オペレーティングシステムのファイルシステムキャッシュは含まれません)。 | 
| 
        SLRUから読み取られたディスクブロック数です。 | 
| 
        SLRUに書き込まれたディスクブロック数です。 | 
| 
        SLRUで存在を検査されたブロック数です。 | 
| 
        SLRUでのダーティデータのフラッシュ数です。 | 
| 
        SLRUでの切り詰めの数です。 | 
| 
        統計情報がリセットされた最終時刻です。 | 
統計情報を参照する他の方法は、上述の標準ビューによって使用される基礎的な統計情報アクセス関数と同じ関数を使用した問い合わせを作成することで設定することができます。
こうした関数の名前などに関する詳細については、標準ビューの定義を参照してください。
(例えばpsqlでは\d+ pg_stat_activityを発行してください。)
データベースごとの統計情報についてのアクセス関数は、どのデータベースに対して報告するのかを識別するためにデータベースのOIDを取ります。
テーブルごと、インデックスごとの関数はテーブルの、もしくはインデックスのOIDを取ります。
関数ごとの統計情報の関数は、関数のOIDを取ります。
これらの関数を使用して参照できるテーブルとインデックス、および関数は現在のデータベース内のものだけであることに注意してください。
  
その他の統計情報収集に関連した関数を表 28.32に示します。
表28.32 その他の統計情報関数
pg_stat_activityビューの基礎となるpg_stat_get_activity関数は、各バックエンドプロセスに関して利用可能な情報をすべて含むレコード集合を返します。
この情報の一部のみを入手することがより簡便である場合があるかもしれません。
このような場合、表 28.33に示す、古めのバックエンド単位の統計情報アクセス関数を使用することができます。
これらのアクセス関数は、1から現在活動中のバックエンドの個数までの値を取る、バックエンドID番号を使用します。
pg_stat_get_backend_idset関数は、これらの関数を呼び出すために、活動中のバックエンド毎に1行を生成する簡便な方法を提供します。
例えば以下はすべてのバックエンドについてPIDと現在の問い合わせを示します。
SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
       pg_stat_get_backend_activity(s.backendid) AS query
    FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s;
表28.33 バックエンド単位の統計情報関数
| 関数 説明 | 
|---|
| 
        
         現在活動中のバックエンドID番号(1から活動中のバックエンドの個数まで)の集合を返します。 | 
| 
        
         バックエンドが最後に行った問い合わせテキストを返します。 | 
| 
        
         バックエンドの最後の問い合わせが開始された時刻を返します。 | 
| 
        
         バックエンドに接続したクライアントのIPアドレスを返します。 | 
| 
        
         クライアントが通信に使用しているTCPポート番号を返します。 | 
| 
        
         バックエンドが接続するデータベースのOIDを返します。 | 
| 
        
         バックエンドのプロセスIDを返します。 | 
| 
        
         プロセスが開始された時刻を返します。 | 
| 
        
         バックエンドにログインしたユーザのOIDを返します。 | 
| 
        
         バックエンドが現在待機中であれば、待機イベント型名を、さもなくばNULLを返します。 詳細は表 28.4を参照してください。 | 
| 
        
         バックエンドが現在待機中であれば、待機イベント名を、さもなくばNULLを返します。 詳細は表 28.5から表 28.13までを参照してください。 | 
| 
        
         バックエンドの現在のトランザクションが開始された時刻を返します。 |