勉強がてらPostgreSQL10の統計情報についてまとめ。
SQLの実行計画作成に使われる統計情報
マニュアル
収集される統計情報は、自動VACUUMやANALYZEの延長で更新される。
-
pg_class
- テーブル、インデックス、シーケンス、ビュー、マテリアライズドビューなどの統計情報を保持。
-
pg_statistic
- 列に関する統計情報を保持。実データが一部含まれるため、一般のユーザは読み取りできない。
一般のユーザには、権限を持つ表に関連する行へのアクセス手段としてpg_statsを公開。
- 列に関する統計情報を保持。実データが一部含まれるため、一般のユーザは読み取りできない。
活動状況の監視を目的に収集される統計情報
統計情報コレクタにより収集される。
動的統計情報ビュー
ビュー名 | 説明 |
---|---|
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_progress_vacuum | VACUUMを実行している(自動バキュームワーカプロセスを含んだ) それぞれのバックエンドごとに1行の形で、現在の進捗を表示。 |
収集済み統計情報ビュー
ビュー名 | 説明 |
---|---|
pg_stat_archiver | WALアーカイバプロセスの 活動状況に関する統計情報を1行のみで表示。 |
pg_stat_bgwriter | バックグラウンドライタプロセスの 活動状況に関する統計情報を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と似ているが、 現在のトランザクション中に呼び出されたものだけをカウント。 |
簡単にまとめると、以下。
- archiver/bgwriter/databaseの統計情報が存在。
- tbale/indexごとにアクセス統計情報、I/O統計情報を保持。
- sequenceはI/Oに関する統計情報のみ保持。
- functionは関数ごとに統計情報を収集。