Sobes.tech
Senior
29

PostgreSQL-де DELETE кезінде деректерге не болады?

Сұралған компаниялар
А7

AI-дан жауап

sobes.tech AI

При выполнении команды DELETE в PostgreSQL происходит логическое удаление строк из таблицы. Физическое удаление данных не происходит сразу — строки помечаются как удалённые (dead tuples), но остаются в таблице до тех пор, пока не будет выполнена операция VACUUM.

Это связано с MVCC (многоверсионным контролем конкуренции), который позволяет другим транзакциям видеть консистентное состояние данных без блокировок.

Таким образом:

  • DELETE помечает строки как удалённые для текущей транзакции.
  • Другие транзакции, которые начались до удаления, могут видеть эти строки.
  • VACUUM очищает физически удалённые строки, освобождая место.

Пример:

DELETE FROM users WHERE id = 123;
-- Строка с id=123 помечена как удалённая, но физически остаётся в таблице до VACUUM.