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? — Replica, которая принимает SELECT запросы пока реплицирует. — Можно писать на реплику? — Нет. Только чтение. — Зачем? — Снять нагрузку чтения с primary: аналитика, отчёты, бэкапы. — А данные всегда свежие? — С небольшой задержкой (lag). Мониторь pg_stat_replication.
— Что такое DEADLOCK? — Это когда транзакция А ждёт транзакцию Б, а транзакция Б ждёт транзакцию А. — И что происходит? — База выбирает жертву и убивает одну из них. — Жестоко. — Зато честно.
Триггер на AFTER INSERT звонит триггеру на BEFORE UPDATE: — Ты не поверишь! Я только что вставил строчку, а она сама себя продублировала через рекурсивный CTE! — Расслабься, это не баг. Это бизнес-логика, которую писал стажёр, уволенный в 2015 году. Просто сделай DISABLE TRIGGER ALL и молись.