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