Тюнинг Autovacuum в PostgreSQL (защита от раздувания БД и задержек I/O)

Обновлено: Август 2026 Стек: PostgreSQL 13/14/15/16, Linux Проверено: Production-Ready

Руководство и конфиг тюнинга Autovacuum в PostgreSQL: предотвращение table bloat, расчет vacuum_cost_limit, naptime и scale_factor для высоконагруженных таблиц.

Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
/etc/postgresql/16/main/postgresql.conf
# /etc/postgresql/16/main/postgresql.conf (Autovacuum)
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 15s
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0.05
autovacuum_analyze_scale_factor = 0.02
autovacuum_vacuum_cost_delay = 2ms
autovacuum_vacuum_cost_limit = 1000
maintenance_work_mem = 512MB
autovacuum_work_mem = 256MB

Разбор ключевых директив конфигурации

Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).

Директива / Блок Рекомендуемое значение Зачем нужно и системное влияние (CPU / RAM / I-O)
autovacuum_vacuum_cost_limit = 1000 1000 Увеличивает квоту дисковых операций перед засыпанием воркера.
autovacuum_vacuum_scale_factor = 0.05 0.05 Запускает VACUUM при обновлении 5% строк.
checkpoint_completion_target = 0.9 0.9 Сглаживает запись контрольных точек (checkpoints) по времени, предотвращая пиковые просадки дискового ввода-вывода (I/O Spikes).
random_page_cost = 1.1 1.1 (NVMe SSD) Указывает планировщику низкую стоимость случайного чтения на SSD/NVMe, что стимулирует частое использование индексов.

Рекомендуемые системные требования VDS под этот стек

Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.

Оптимальный сайзинг: 2-4 vCPU, 4-8 GB RAM, NVMe SSD
Timeweb Cloud
2 CPU / 4 GB NVMe
Рекомендуемые ресурсы
2-4 vCPU / 4-8 GB RAM / 50 GB NVMe
🔷 Selectel
2 vCPU / 4 GB RAM
Рекомендуемые ресурсы
2-4 vCPU / 4-8 GB RAM / 50 GB NVMe
🟠 Beget
Turbo 4 GB
Рекомендуемые ресурсы
2-4 vCPU / 4-8 GB RAM / 50 GB NVMe

Онлайн-утилиты SysKit для проверки этого сервера

Протестируйте корректность применения конфигурации прямо сейчас в один клик.

Частые ошибки при настройке и их решение (FAQ)

Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.

Как настроить autovacuum для отдельной таблицы?
Выполните `ALTER TABLE orders SET (autovacuum_vacuum_scale_factor = 0.01);`.
Как применить изменения параметров без перезагрузки сервера?
Для большинства параметров выполните: `sudo -u postgres psql -c 'SELECT pg_reload_conf();'`. Изменение `shared_buffers` требует `systemctl restart postgresql`.
Как найти медленные SQL запросы в базе?
Включите директиву `log_min_duration_statement = 250ms` и расширение `pg_stat_statements` для подробного профилирования.