VACUUM / AUTOVACUUM
Очищает «мёртвые» версии строк после UPDATE и DELETE. Необходим для корректной работы PostgreSQL.
VACUUM table_name;
VACUUM ANALYZE table_name;
VACUUM FULL table_name; -- осторожно! блокирует таблицуОбъяснение
Пример
-- Проверить таблицы с большим количеством мёртвых строк
SELECT relname, n_dead_tup, n_live_tup,
last_autovacuum
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC;Связанные термины
Анекдоты по теме
— Что такое Hot standby feedback? — Механизм, когда replica сообщает primary какие XID ещё нужны. — Зачем? — Предотвращает отмену запросов на реплике из-за VACUUM на primary. — Без этого? — Длинный запрос на реплике прерывается: 'ERROR: canceling statement due to conflict with recovery'. — Включить: hot_standby_feedback = on в postgresql.conf на replica.
— Что такое WAL? — Write-Ahead Log. Журнал изменений. — Зачем? — Перед изменением данных — запись в WAL. При сбое — восстановление из WAL. — Это медленно? — WAL пишется последовательно — это быстро. Сами данные — позже. — Репликация тоже через WAL? — Да. Replica читает WAL с primary.
— Что такое Hot Standby? — Replica, которая принимает SELECT запросы пока реплицирует. — Можно писать на реплику? — Нет. Только чтение. — Зачем? — Снять нагрузку чтения с primary: аналитика, отчёты, бэкапы. — А данные всегда свежие? — С небольшой задержкой (lag). Мониторь pg_stat_replication.