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