Sobes.tech
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.