pg_dbms_stats

# pg_dbms_stats-1.3.1

1. 関数
2. テーブル
3. ビュー

## 関数

pg_dbms_stats は下記の関数を含みます。

各関数の意味は以下の通りです。

機能 | 関数 | 引数 | オブジェクト単位 | 戻り値
--- | --- | --- | --- | ---
バックアップ | dbms_stats.backup_database_stats | comment | データベース | int8
dbms_stats.backup_schema_stats | schemaname、comment | スキーマ
dbms_stats.backup_table_stats | relname、comment | テーブル
schemaname、tablename、comment
dbms_stats.backup_column_stats | relname、attname、comment | 列
schemaname、tablename、attname、comment
リストア | dbms_stats.restore_database_stats | timestamp | データベース | regclass
dbms_stats.restore_schema_stats | schemaname、timestamp | スキーマ
dbms_stats.restore_table_stats | relname、timestamp | テーブル
schemaname、tablename、timestamp
dbms_stats.restore_column_stats | relname、attname、timestamp | 列
schemaname、tablename、attname、timestamp
dbms_stats.restore_stats | backup_id | バックアップ
ロック | dbms_stats.lock_database_stats | (なし) | データベース | regclass
dbms_stats.lock_schema_stats | schemaname | スキーマ
dbms_stats.lock_table_stats | relname | テーブル
schemaname、tablename
dbms_stats.lock_column_stats | relname、attname | 列
schemaname、tablename、attname
ロック解除 | dbms_stats.unlock_database_stats | (なし) | データベース | regclass
dbms_stats.unlock_schema_stats | schemaname | スキーマ
dbms_stats.unlock_table_stats | relname | テーブル
schemaname、tablename
dbms_stats.unlock_column_stats | relname、attname | 列
schemaname、tablename、attname
インポート | dbms_stats.import_database_stats | src | データベース | void
dbms_stats.import_schema_stats | schemaname、src | スキーマ
dbms_stats.import_table_stats | relname、src | テーブル
schemaname、tablename、src
dbms_stats.import_column_stats | relname、attname、src | 列
schemaname、tablename、attname、src
パージ | dbms_stats.purge_stats | backup_id、force | バックアップ | dbms_stats.backup_history
クリーンアップ | dbms_stats.clean_up_stats | (なし) | データベース | text

各関数で用いられている引数の意味は以下の通りです。

引数 | データ型 | 意味
--- | --- | ---
schemaname | text | 処理対象のスキーマ名です。
relname | regclass | 処理対象のテーブル名です。ただし、(スキーマ名).(テーブル名) という形になります。
tablename | text | 処理対象のテーブル名です。
attname | text | 処理対象の列名です。
comment | text | バックアップを識別するためのコメントです。
as_of_timestamp | timestamptz | リストアしたいタイミングの基準になるタイムスタンプです。このタイムスタンプ以前で最新のバックアップデータをリストアします。該当するバックアップが存在しない場合、統計情報は現在プランナが見ている値から変更されません。
src | text | インポート対象のファイルの絶対パスです。
backup_id | bigint | リストアやパージの対象となるバックアップIDです。 リストアの場合、一致するバックアップIDのバックアップデータをリストアします。 パージの場合、一致するバックアップID以前のバックアップを削除します。
force | bool | パージするとき、バックアップを強制的に削除するかを決める変数です。 trueの場合、対象範囲のバックアップを全て削除します。 falseの場合、対象範囲外にデータベース単位のバックアップデータが存在しなければ、警告メッセージを出力して処理を中断します。 デフォルトはfalseです。

また、統計情報のエクスポート機能は、SQLファイルで実装しています。
各SQLファイルの意味は以下の通りです。なお、出力ファイル名のデフォルトはexport_stats.dmpです。

ファイル名 | 対象統計情報 | 備考
--- | --- | ---
export_effective_stats.<PGバージョン>.sql.sample | プランナが見ている統計情報 | -
export_plain_stats-<PGバージョン>.sql.sample | 真の統計情報のみ | pg_dbms_stats未インストールでも使用可能です。

## テーブル

pg_dbms_statsは以下のテーブルを含みます。

各テーブルの意味は以下の通りです。

テーブル名 | 列名 | データ型 | 意味
--- | --- | --- | ---
dbms_stats.backup_history | id | int8 | バックアップ時に付与されたバックアップIDです。
time | timestamptz | バックアップ時のタイムスタンプです。
unit | char(1) | バックアップ時のオブジェクト単位です。 d:データベース、s:スキーマ、t:テーブル、c:列
comment | text | バックアップ時に指定したコメントです。

## ビュー

pg_dbms_stats は下記のビューを含みます。

各ビューの意味は以下の通りです。

ビュー名 | 意味
--- | ---
dbms_stats.relation_stats_effective | プランナに見せるテーブルごとの統計情報を表示します。PostgreSQLのpg_classカタログに対応します。
dbms_stats.column_stats_effective | プランナに見せる列ごとの統計情報を表示します。PostgreSQLのpg_statisticカタログに対応します。
dbms_stats.status | プランナに見せる列ごとの統計情報のうち、ユーザが読み取り可能なものを表示します。PostgreSQLのpg_statsビューに対応します。

## 関連項目

psql, vacuumdb