pg_autovacuumカタログは、自動バキュームデーモンについての付加的なリレーションごとの設定パラメータを保存しています。 もし特定のリレーションで、このカタログにエントリがある場合は、与えられたパラメータは、対象のテーブルに対しての自動バキュームに使用されます。エントリが無い場合はシステムのデフォルト値が使用されます。 自動バキュームデーモンについての詳細は項23.1.4を参照してください。
注意: pg_autovacuumは、その代わりにpg_class.reloptionsエントリに保存されている情報と共に今後のリリースで姿を消しそうです。
表 44-10. pg_autovacuumの列
名前 | 型 | 参照先 | 説明 |
---|---|---|---|
vacrelid | oid | pg_class.oid | このエントリが指しているテーブル |
enabled | bool | falseの場合は、トランザクションID周回を防ぐ場合を除いて、このテーブルは自動バキュームされません。 | |
vac_base_thresh | integer | バキューム前の変更された列数の最小値 | |
vac_scale_factor | float4 | vac_base_threshに加算されるreltuplesの乗数 | |
anl_base_thresh | integer | 解析前に変更された列の最小値 | |
anl_scale_factor | float4 | anl_base_threshに加算されるreltuplesの乗数 | |
vac_cost_delay | integer | vacuum_cost_delayのカスタムパラメータ | |
vac_cost_limit | integer | vacuum_cost_limitカスタムパラメータ | |
freeze_min_age | integer | vacuum_freeze_min_ageカスタムパラメータ | |
freeze_max_age | integer | autovacuum_freeze_max_ageカスタムパラメータ |
更新または削除されたタプルの数が、そのリレーションに存在すると見込まれている有効なタプル数×vac_scale_factor+vac_base_threshを越えた時、自動バキュームデーモンは特定のテーブルに対するVACUUM操作を始めます。 同様に挿入または更新、削除されたタプルの数がそのリレーションに存在すると見込まれている有効なタプル数×anl_scale_factor+anl_base_threshを越えた時に自動バキュームデーモンはANALYZE操作を始めます。
また、テーブルのpg_class.relfrozenxidフィールドがfreeze_max_ageトランザクションより多くなった時、テーブルが変更されたかどうか、またはpg_autovacuum.enabledがfalseに設定されていることに関係なく、自動バキュームデーモンはトランザクションID周回を防ぐためにVACUUMを行います。 こうしたVACUUMを実行するための自動バキュームの起動は、自動バキュームが無効であっても行われます。 周回防止に関する詳細は項23.1.3を参照してください。
すべての数値フィールドには、特定の値についてはシステム全体のデフォルトを使用することを示す、-1(や任意の負の値)を持たせることができます。 vac_cost_delay変数はautovacuum_vacuum_cost_delay設定パラメータからそのデフォルト値を引き継ぎます。 もしこれが負の値であればvacuum_cost_delayから引き継ぐことに注目してください。 同じことがvac_cost_limitにも当てはまります。 また自動バキュームは、システム全体の設定より大きな値をテーブル毎のfreeze_max_ageに設定しようとしても無視します。 (小さな値しか設定できません。) さらに、freeze_min_age valueはシステム全体に対するautovacuum_freeze_max_age設定の半分までに制限されています。 freeze_max_ageを非常にゼロといった小さな値に設定できますが、頻繁にバキュームを強制することになるので賢明とはいえません。