Обычный autovacuum помечает мёртвые строки как свободное место, но не возвращает его файловой системе — таблица физически не уменьшается. VACUUM FULL пересобирает таблицу с нуля и реально сжимает файл на диске, но берёт ACCESS EXCLUSIVE lock на всё время работы — для большой таблицы это часы простоя.
pg_repack (расширение + CLI) делает то же без долгой блокировки: создаёт копию таблицы, применяет накопленные за время копирования изменения через триггер, и подменяет таблицу коротким ACCESS EXCLUSIVE только на финальный swap — секунды, а не часы.
VACUUM FULL — для разовой чистки небольшой таблицы в окне обслуживания. pg_repack — для продакшн-таблицы, которую нельзя останавливать: pg_repack -d dbname -t table_name, но нужно вдвое больше места на диске, чем занимает таблица.
#postgresql
