Автовакуум в PostgreSQL работает следующим образом: фоновый процесс считывает страницы, ищет мёртвые кортежи и, если находит, удаляет их. 2 Когда функция автоматической очистки находит неиспользуемые кортежи, она удаляет их, освобождая место на диске для новых данных. 2
Автовакуум нужен для:
- удаления неактуальных строк, освобождая место для новых данных; 3
- обновления статистики для оптимизатора запросов; 3
- предотвращения переполнения транзакций. 3
Некоторые параметры, которые влияют на работу автовакуума:
- autovacuummaxworkers. 3 Задаёт максимальное количество процессов автовакуума, которые могут работать одновременно. 3 По умолчанию в PostgreSQL установлено значение 3. 3
- autovacuum_naptime. 3 Задаёт интервал между циклами автовакуума, то есть как часто PostgreSQL будет проверять, нужно ли вакуумировать какие-то таблицы. 3 По дефолту этот интервал составляет 60 секунд. 3
- autovacuumvacuumscalefactor и autovacuumanalyzescalefactor. 3 Эти параметры определяют, при каком проценте изменений в таблице должен запускаться автовакуум и анализ статистики. 3