В чем разница между VACUUM и AUTOVACUUM

«В чем разница между VACUUM и AUTOVACUUM» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

VACUUM — это ручная команда для очистки "мертвых" строк (удаленных или обновленных) в таблицах PostgreSQL, освобождающая место для повторного использования, но не возвращающая его ОС.

AUTOVACUUM — автоматический процесс, который периодически запускает VACUUM и ANALYZE для поддержания производительности БД без ручного вмешательства.

Ключевые отличия:

  • Ручной vs автоматическийVACUUM требует явного вызова, AUTOVACUUM работает в фоне.
  • ГибкостьVACUUM можно настроить точечно (например, VACUUM FULL для возврата памяти ОС), AUTOVACUUM управляется параметрами конфигурации.

Пример ручного VACUUM:

VACUUM ANALYZE users; -- Очистка и сбор статистики для таблицы users

Настройка AUTOVACUUM:

ALTER TABLE users SET (autovacuum_enabled = true, autovacuum_vacuum_scale_factor = 0.1);