Sobes.tech
Senior
25

Что происходит с удалёнными записями в PostgreSQL физически? Когда они удаляются?

Companies where asked
А7

Answer from AI

sobes.tech AI

В PostgreSQL при удалении записи она физически не удаляется сразу из таблицы. Вместо этого запись помечается как удалённая (dead tuple), но остаётся в таблице для обеспечения согласованности транзакций и возможности отката.

Фактическое удаление происходит во время процесса вакуумирования (VACUUM), который освобождает место, занятой такими «мертвыми» записями, и делает его доступным для повторного использования.

Таким образом, удалённые записи существуют в таблице до тех пор, пока не выполнится VACUUM. Это позволяет избежать проблем с конкурентным доступом и обеспечивает MVCC (многоверсионность).

Пример команды для запуска вакуумирования:

VACUUM;

Или для более агрессивного освобождения места:

VACUUM FULL;