10
Autovacuum worker
Настройки памяти
autovacuum_work_mem = −1
(при –1 используется maintenance_work_mem = 64MB)
настройки действуют для каждого рабочего процесса,
память выделяется сразу в полном объеме
больший объем памяти уменьшает избыточную обработку
индексных страниц
Мониторинг
log_autovacuum_min_duration
pg_stat_progress_vacuum
Кроме настроек, влияющих на то, когда и как работать процессу
автоочистки, есть возможность отрегулировать выделяемую память для
рабочих процессов (autovacuum worker).
По умолчанию размер памяти ограничен параметром
maintenance_work_mem, который действует не только на автоочистку,
но и на все остальные служебные фоновые процессы. Обычно этот
параметр можно установить в достаточно большое значение, поскольку
фоновых процессов не так много. Однако число рабочих процессов
автоочистки (регулируемое параметром autovacuum_max_workers)
может быть большим, а память выделяется сразу полностью (а не по
необходимости). Поэтому для процессов автоочистки можно настроить
отдельное ограничение с помощью параметра autovacuum_work_mem.
Как говорилось в теме «Очистка», процесс очистки может работать
и с минимальным объемом памяти. Но если на таблице созданы
индексы, то небольшое значение может привести к повторным
сканированиям одних и тех же индексных страниц — автоочистка будет
работать медленнее. В идеале следует подобрать такое минимальное
значение, при котором нет повторных сканирований.
Для мониторинга есть параметр log_autovacuum_min_duration, который
выводит информацию об очистке в журнал сообщений сервера.
Напомним, что зачастую следует не увеличивать размер памяти,
а уменьшать порог срабатывания очистки, чтобы за один раз
обрабатывалось меньше данных.