Назад к вопросам
Senior
3
Что происходит с данными при DELETE в PostgreSQL?
Компании, где спрашивали
А7
Ответ от нейросети
sobes.tech AI
При выполнении команды DELETE в PostgreSQL происходит логическое удаление строк из таблицы. Физическое удаление данных не происходит сразу — строки помечаются как удалённые (dead tuples), но остаются в таблице до тех пор, пока не будет выполнена операция VACUUM.
Это связано с MVCC (многоверсионным контролем конкуренции), который позволяет другим транзакциям видеть консистентное состояние данных без блокировок.
Таким образом:
- DELETE помечает строки как удалённые для текущей транзакции.
- Другие транзакции, которые начались до удаления, могут видеть эти строки.
- VACUUM очищает физически удалённые строки, освобождая место.
Пример:
DELETE FROM users WHERE id = 123;
-- Строка с id=123 помечена как удалённая, но физически остаётся в таблице до VACUUM.