0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgreSQL14の統計情報

0
Last updated at Posted at 2025-11-11

OSS-DB Goldの更新に向けてまとめ。理解していると実運用でも役立つ。
2025/11現在、試験が対象としているバージョンが14なので、14でのまとめ。
そろそろ対象バージョンが更新されそうな気も。

PostgreSQL10の統計情報からのバージョンアップによる差分は赤文字で記載。

SQLの実行計画作成に使われる統計情報

マニュアル
統計情報は、自動VACUUMの延長や、手動でのANALYZEの実行により更新される。

  • pg_class
    • テーブル、インデックス、シーケンス、ビュー、マテリアライズドビューなどの統計情報を保持。
  • pg_statistic
    • 列に関する統計情報を保持。実データが一部含まれるため、一般のユーザは読み取りできない。
    • 一般のユーザには権限を持つ表に関連する行へのアクセス手段としてpg_statsを公開。

活動状況の監視を目的に収集される統計情報

統計情報コレクタにより収集される。

動的統計情報ビュー

GSSAPIと、ANALYZE/CREATE INDEX/CLUSTER/basebackup/COPYの進捗ビューが追加された。

ビュー名 説明
pg_stat_activity サーバプロセス毎に1行で、状態や現在の問い合わせ等の
プロセスの現在の活動状況に関連した情報を表示。
pg_stat_replication WAL送信プロセス毎に1行で、
マスターサーバが接続したスタンバイサーバへの
レプリケーションに関する統計情報を表示。
pg_stat_wal_receiver 1行で、スタンバイサーバ上のWALレシーバに関する統計情報を表示。
pg_stat_subscription 1つのサブスクリプションにつき少なくとも1行で、
サブスクリプションワーカに関する情報を表示。
pg_stat_ssl 接続(通常およびレプリケーション)あたり1行で、
接続に使われるSSLの情報を表示。
pg_stat_gssapi 接続(通常およびレプリケーション)あたり1行で、
接続に使われるGSSAPI認証と暗号化に関する情報を表示。
pg_stat_progress_analyze ANALYZEを実行している(自動バキュームワーカプロセスを含んだ)各バックエンドごとに1行で、現在の進捗を表示。
pg_stat_progress_create_index CREATE INDEXまたはREINDEXを実行している各バックエンドごとに行で、現在の進捗を表示。
pg_stat_progress_vacuum VACUUMを実行している(自動バキュームワーカプロセスを含んだ)それぞれのバックエンドごとに1行の形で、現在の進捗を表示。
pg_stat_progress_cluster CLUSTERまたはVACUUM FULLを実行している各バックエンド毎に1行で、現在の進捗を表示。
pg_stat_progress_basebackup ベースバックアップをストリームしている各WAL送信プロセス毎に1行で、現在の進捗を表示。
pg_stat_progress_copy COPYを実行している各バックエンド毎に1行で、現在の進捗を表示。

収集済み統計情報ビュー

ビュー名 説明
pg_stat_archiver WALアーカイバプロセスの活動状況に関する統計情報を1行のみで表示。
pg_stat_bgwriter バックグラウンドライタプロセスの活動状況に関する統計情報を1行のみで表示。
pg_stat_wal WALの活動状況に関する統計情報を1行のみで表示。
pg_stat_database データベース当たり1行の形で、データベース全体の情報を表示。
pg_stat_database_conflicts データベース毎に1行の形式で、スタンバイサーバにおける復旧との競合のためにキャンセルされた問い合わせについてのデータベース全体の統計情報を表示。
pg_stat_all_tables 現在のデータベースの各テーブルごとに1行の形で、
特定のテーブルへのアクセスに関する統計情報を表示。
pg_stat_sys_tables システムテーブルのみが表示される点を除き、
pg_stat_all_tablesと同じ。
pg_stat_user_tables ユーザテーブルのみが表示される点を除き、
pg_stat_all_tablesと同じ。
pg_stat_xact_[all|sys|user]_tables pg_stat_all_tablesに似ているが、
現在のトランザクションにて実施された処理結果をカウント。
pg_stat_[all|sys|user]_indexes 現在のデータベースのインデックスごとに1行の形で、
特定のインデックスへのアクセスに関する統計情報を表示。
pg_statio_[all|sys|user]_tables 現在のデータベース内のテーブルごとに1行の形で、
特定のテーブルに対するI/Oに関する統計情報を表示。
pg_statio_[all|sys|user]_indexes 現在のデータベース内のインデックスごとに1行の形で、
特定のインデックスに対するI/Oに関する統計情報を表示。
pg_statio_[all|sys|user]_sequences 現在のデータベース内のシーケンスごとに1行の形で、
特定のシーケンスに対するI/Oに関する統計情報を表示。
pg_stat_user_functions 追跡された関数ごとに1行の形で、
関数の実行に関する統計情報を表示。
pg_stat_xact_user_functions pg_stat_user_functionsと似ているが、現在のトランザクション中に呼び出されたものだけをカウント。
pg_stat_slru SLRU[*1]ごとに1行の形で、操作に関する統計情報を表示。
pg_stat_replication_slots レプリケーションスロット毎に1行の形で、レプリケーションスロットの使用状況に関する統計情報を表示。

[*1]SLRU(simple least-recently-used):キャッシュ管理方式。ここではSLRU方式でのキャッシュ管理領域を指す。

簡単にまとめると、以下。

  • archiver/bgwriter/wal/databaseの統計情報が存在。
  • table/indexごとにアクセス統計情報、I/O統計情報を保持。
  • sequenceはI/Oに関する統計情報のみ保持。
  • functionは関数ごとに統計情報を収集。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?