😺
vacuumの設定を覗いてみる
Daily Blogging58日目
pgheroでvacuumの存在を知ったはいいけど、vacuum自体の設定の確認が分からなかったのでちょっと調べてみた
今回はAmazon RDS for PostgreSQL データベースと Aurora PostgreSQLのお話
クエリで現状の確認ができる
次のクエリでautovacuumの設定を確認できる
SELECT name, setting, unit FROM pg_settings WHERE name LIKE 'autovacuum%';
※設定値は適当な値にしてます
基本設定
パラメータ | 設定値 | 説明 |
---|---|---|
autovacuum |
on |
自動バキュームを有効化。 |
autovacuum_naptime |
1min |
autovacuumがテーブル状況を確認する間隔。短くするとその分チェック回数が増えるが、CPU負荷も上がる。 |
autovacuum_max_workers |
3 |
Autovacuumワーカーの最大並列数(デフォルト 3 )。増やすと同時並行でより多くのテーブルを処理できるが、サーバー負荷が高くなる。 |
autovacuum_work_mem |
-1 |
Autovacuum用の作業メモリ(デフォルト-1 → maintenance_work_mem を使用)。大きくするとバキュームがより多くのデータを一度に処理可能。 |
バキューム (VACUUM) のトリガー設定
パラメータ | 設定値 | 説明 |
---|---|---|
autovacuum_vacuum_threshold |
50 |
VACUUM が実行される変更行数の最小閾値(デフォルト 50 )。変更の少ないテーブルでもバキュームが走るようになる。 |
autovacuum_vacuum_scale_factor |
0.2 |
テーブルの20% が変更された場合に VACUUM を実行(デフォルト 0.2 )。デッドタプルの蓄積を抑えるが、頻繁にバキュームが走るため負荷が増加。 |
autovacuum_vacuum_insert_threshold |
1000 |
INSERT のみが行われるテーブルで VACUUM を実行するための行数閾値(デフォルト 1000 )。 |
autovacuum_vacuum_insert_scale_factor |
0.2 |
INSERT のみのテーブルで、 20% の行が追加されるとVACUUM を実行(デフォルト 0.2 )。 |
ANALYZE (統計情報更新) のトリガー設定
パラメータ | 設定値 | 説明 |
---|---|---|
autovacuum_analyze_threshold |
50 |
ANALYZE が実行される変更行数の最小閾値(デフォルト 50 )。統計情報の更新が頻繁に行われる設定。 |
autovacuum_analyze_scale_factor |
0.1 |
テーブルの10% が更新された場合に ANALYZE を実行(デフォルト 0.1 )。小さくすると統計情報がより最新に保たれるが、負荷が増える。 |
VACUUM のパフォーマンス設定
パラメータ | 設定値 | 説明 |
---|---|---|
autovacuum_vacuum_cost_limit |
200 |
1回のAutovacuumで消費できるコストの上限(デフォルト 200 )。高くするとバキュームがより多くのデータを処理できるが、負荷も増加。 |
autovacuum_vacuum_cost_delay |
20ms |
Autovacuumが1回の処理ごとに待機する時間(デフォルト 20ms )。短くするとバキューム速度が上がるが、I/O負荷が増える。 |
まとめ
vacuumの負荷も計算しながら適切な値を設定しないとダメ
結構大変だ
Discussion