Autovacuum очищает мертвые строки и обновляет статистику планировщика автоматически. Главный приём тюнинга – снизить порог запуска для крупных таблиц, чтобы вакуум проходил чаще и не накапливал отставание. Настраивается глобально в postgresql.conf или точечно на уровне таблицы.
Как настроить
1. Точечно для горячей таблицы (предпочтительнее глобальной правки):
ALTER TABLE orders SET ( autovacuum_vacuum_scale_factor = 0.01, -- доля изменённых строк, по умолч. 0.2 autovacuum_vacuum_threshold = 1000 -- базовый порог строк, по умолч. 50 );
2. Глобально, если вакуум не успевает за нагрузкой (postgresql.conf):
autovacuum_vacuum_cost_limit = 2000 -- лимит «стоимости» за цикл -- применить: SELECT pg_reload_conf();
3. Проверьте результат:
SELECT relname, last_autovacuum, autovacuum_count FROM pg_stat_user_tables ORDER BY last_autovacuum;
Регулярность срабатывания автовакуума и его влияние на нагрузку удобнее отслеживать в динамике – PGLens хранит историческую статистику активности Vacuum/Analyze и динамику размеров объектов, так что после изменения параметров видно, как настройка повлияла на поведение базы, без необходимости ручного сбора и сопоставления системной статистики.