自動バキュームの実施間隔を1つの区間として、次の自動バキュームが実行されるよりも前に積極的なタプル凍結が完了するようにスケジュールします。例えば、自動バキュームによる凍結処理が1週間に一度発生する環境ならば、1週間を1つの区間として、その区間内で必要な時間を決定します。
積極的なタプル凍結に必要な時間は、運用しているデータベースそれぞれのpgx_stat_freeze_resultsテーブルに格納された過去の自動バキュームによるトランザクションIDの凍結処理にかかった時間を元に、以下のように算出してください。
この例では、自動バキュームによる凍結処理が発生する間隔を1週間としています。運用しているデータベースそれぞれで実施し、合計を算出してください。
# SELECT sum(total_elapsed_time) - sum(sleep_times) as total_time FROM pgx_stat_freeze_results WHERE measurement_start_time >= '2024/10/21 00:00:00' AND measurement_end_time < '2024/10/28 00:00:00' AND autovacuum = true;
業務負荷の低い時間を十分に確保できない場合には、多重度を上げてください。多重度はスクリプトで指定できます。