Sobes.tech
Назад к вопросам
Senior
8

Что происходит с удаленными строками в PostgreSQL?

Компании, где спрашивали
Альфа-БанкАльфа-Банк

Ответ от нейросети

sobes.tech AI

В PostgreSQL удалённые строки не удаляются физически сразу после операции DELETE или обновления (UPDATE). Вместо этого они становятся «мертвыми» (dead tuples) и остаются в таблице до выполнения операции VACUUM.

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

Что происходит:

  • При удалении или обновлении создаётся новая версия строки, а старая помечается как удалённая, но физически остаётся в таблице.
  • Эти «мертвые» строки занимают место и могут замедлять работу.
  • Команда VACUUM очищает такие строки, освобождая пространство для повторного использования.

Таким образом, удалённые строки в PostgreSQL — это не сразу физически удалённые данные, а помеченные для удаления версии, которые будут очищены позже в процессе обслуживания базы.