Блог инженера

History is written by its contributors

PostgreSQL VACUM: что это и зачем нужно

2025-04-21 время чтения 4 мин Postgresql Ilya Brin

Что такое VACUUM в PostgreSQL?

VACUUM — это уборка в мире PostgreSQL. Разберёмся, когда пора действовать и почему спешка только навредит.

Почему нужен VACUUM?

PostgreSQL использует MVCC (Multiversion Concurrency Control) — механизм, который позволяет читать данные, даже если их кто-то изменяет. Побочный эффект: старые версии строк не удаляются мгновенно, а остаются в таблице как “мёртвые” (dead tuples).

Когда вы удаляете или обновляете строки в таблице, PostgreSQL не сразу освобождает место. Вместо этого он помечает эти строки как “мертвые” и продолжает использовать старые версии данных. Это позволяет откатить транзакции, но со временем “мертвые” строки накапливаются, занимая место и замедляя работу базы. VACUUM очищает эти “мертвые” строки, освобождая место и улучшая производительность. Он также обновляет статистику, что помогает оптимизатору запросов выбирать лучшие планы выполнения.

Читать далее