😺
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