Sobes.tech
Senior

Kas vyksta fiziškai su ištrintais įrašais PostgreSQL? Kada jie ištrinami?

sobes.tech AI

Atsakymas iš AI

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

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

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

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

VACUUM;

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

VACUUM FULL;