前提・実現したいこと
初めまして。
postgresql 9.2を使用しているのですが、特定の1テーブルだけautovacuumが実行されず、困っております。
autovacuumが正常に動作するようにしたいです。
お力添えいただいたけますと幸いです。
発生している問題・エラーメッセージ
特定のテーブルのみautovacuumが実施されない。
・バキューム閾値は超えている。(n_live_tupが約60億、n_dead_tupが約50億)
・他のテーブルではバキューム閾値を超えると正しくautovacuumが実施される。
該当のソースコード
postgresqlのautovacuum関連のパラメーターは下記の通り。
autovacuum = on
log_autovacuum_min_duration = -1
autovacuum_max_workers = 3
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0.2
autovacuum_analyze_scale_factor = 0.1
autovacuum_freeze_max_age = 200000000
autovacuum_vacuum_cost_delay = 20ms
autovacuum_vacuum_cost_limit = -1
試したこと
・手動でvacuumを実施すると問題なく実行される。(n_dead_tupが0になることを確認。)
・テーブル毎の設定が入っているか確認したが、何もなかった。
補足情報(FW/ツールのバージョンなど)
・autovacuumが実行されないテーブルがあるDBは17つのテーブルがあり、
autovacuumが実行されないテーブルは他のテーブルと比べてデータ量が100倍近くある。
・autovacuumが実行されないテーブルでanalyzeを実施しても、select count(*)の数とn_live_tupの数に大きく差がある。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。