他のバージョンの文書9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

18.10. 自動Vacuum作業

以下に示す設定は自動バキューム機能の動作を制御します。詳細は23.1.6. 自動バキュームデーモンを参照してください。 これらの設定の多くは、テーブル単位で変更できることに注意してください。 格納パラメータを参照してください。

autovacuum (boolean)

サーバがautovacuumランチャデーモンを実行すべきかどうかを管理します。 デフォルトでは有効です。 しかしautovacuumを作動させるためにはtrack_countsも有効でなければなりません。 このパラメータはpostgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。 ただし、テーブルストレージパラメータを変更することにより、autovacuumは個々のテーブルに対して無効にできます。

このパラメータが無効であったとしてもシステムは、トランザクションIDの周回を防止する必要があれば、autovacuumプロセスを起動することに注意してください。 詳細は23.1.5. トランザクションIDの周回エラーの防止を参照してください。

log_autovacuum_min_duration (integer)

少なくとも指定ミリ秒実行した場合、autovacuumで実行される各活動がログに残るようになります。 これをゼロに設定すると、すべてのautovacuumの活動がログに残ります。 マイナス1(デフォルト)はautovacuum活動のログを無効にします。 例えば、これを250msに設定すると、250ms以上かかって実行されたautovacuumや解析はすべてログに残ります。 さらに、-1以外の値にこのパラメータが設定された場合、競合するロックの存在によりオートバキューム動作が省略されるとメッセージはログに記録されます。 このパラメータを有効にすることは、autovacuum活動の追跡に役に立ちます。 このパラメータはpostgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。 ただし、この設定はテーブルストレージパラメータの変更により、それぞれのテーブルに対して上書きすることができます。

autovacuum_max_workers (integer)

同時に実行することができるautovacuumプロセス(autovacuumランチャ以外)の最大数を指定します。 デフォルトは3です。 サーバ起動時のみで設定可能です。

autovacuum_naptime (integer)

あるデータベースについて実行されるautovacuumデーモンの最小遅延を指定します。 それぞれの周期で、デーモンはそのデータベースを試験し、そしてそのデータベース内のテーブルで必要性が認められると、VACUUMおよびANALYZEコマンドを発行します。 遅延は秒単位で計測され、デフォルトは1分(1min)です。 このパラメータはpostgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。

autovacuum_vacuum_threshold (integer)

いかなる1つのテーブル内にVACUUMをトリガする必要のある、更新もしくは削除されたタプルの最小数を指定します。 デフォルトは50タプルです。 このパラメータはpostgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。 ただし、この設定はテーブルストレージパラメータの変更により、それぞれのテーブルに対して上書きすることができます。

autovacuum_analyze_threshold (integer)

どのテーブルに対してもANALYZEをトリガする必要のある、挿入、更新、もしくは削除されたタプルの最小数を指定します。 デフォルトは50タプルです。 このパラメータはpostgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。 この設定は格納パラメータの変更により、それぞれのテーブルに対して上書きすることができます。

autovacuum_vacuum_scale_factor (floating point)

VACUUMをトリガするか否かを決定する場合、autovacuum_vacuum_thresholdに追加するテーブル容量の断片を指定します。 デフォルトは0.2(テーブルサイズの20%)です。 このパラメータはpostgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。 この設定はテーブルストレージパラメータの変更により、それぞれのテーブルに対して上書きされます。

autovacuum_analyze_scale_factor (floating point)

ANALYZEをトリガするか否かを決定する場合、autovacuum_analyze_thresholdに追加するテーブル容量の割合を指定します。 デフォルトは0.1(テーブルサイズの10%)です。 このパラメータはpostgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。 この設定はテーブルストレージパラメータの変更により、それぞれのテーブルに対して上書きされます。

autovacuum_freeze_max_age (integer)

トランザクションID周回を防ぐためにVACUUM操作が強制される前までにテーブルのpg_class.relfrozenxid フィールドが到達できる最大(トランザクションにおける)年代を指定します。 自動バキュームが無効であった時でも、システムは周回を防ぐために自動バキューム子プロセスを起動することに注意してください。

vacuumは同時にpg_clogサブディレクトリから古いファイルの削除を許可します。 これが、比較的低い2億トランザクションがデフォルトである理由です。 このパラメータはサーバ起動時にのみ設定可能です。 しかし、この設定はテーブルストレージパラメータの変更により、それぞれのテーブルで減らすことができます。 詳細は23.1.5. トランザクションIDの周回エラーの防止を参照してください。

autovacuum_multixact_freeze_max_age (integer)

トランザクションID周回を防ぐためにVACUUM操作が強制される前までにテーブルのpg_class.relminmxid フィールドが到達できる最大(マルチトランザクションにおける)年代を指定します。 自動バキュームが無効であった時でも、システムは周回を防ぐために自動バキューム子プロセスを起動することに注意してください。

またマルチトランザクションIDのvacuumはpg_multixactpg_multixact/offsetsサブディレクトリから古いファイルの削除します。 これがデフォルトが4億トランザクションをやや下回る理由です。 このパラメータはサーバ起動時にのみ設定可能です。 しかし、この設定はテーブルストレージパラメータの変更により、それぞれのテーブルで減らすことができます。 詳細は23.1.5.1. マルチトランザクションと周回を参照してください。

autovacuum_vacuum_cost_delay (integer)

自動VACUUM操作に使用されるコスト遅延値を指定します。 -1に指定されると、一定の vacuum_cost_delayの値が使用されます。 デフォルト値は20ミリ秒です。 このパラメータはpostgresql.confファイル内、または、サーバのコマンドラインのみで設定可能です。 この設定はテーブルストレージパラメータの変更により、それぞれのテーブルに対して上書きすることができます。

autovacuum_vacuum_cost_limit (integer)

自動VACUUM操作に使用されるコスト限界値を指定します。 (デフォルトの)-1が指定されると、一定の vacuum_cost_limitの値が使用されます。 この値は、実行中の自動バキュームワーカが複数存在する場合ワーカすべてに比例分配されることに注意してください。 したがって各ワーカの制限を足し合わせてもこの変数による制限を超えることはありません。 このパラメータはpostgresql.confファイル、または、サーバのコマンドラインのみで設定可能です。 この設定はテーブルストレージパラメータの変更により、それぞれのテーブルに対して上書きすることができます。