Sobes.tech
Senior

Какво прави VACUUM в PostgreSQL и защо се появяват мъртви редове?

sobes.tech AI

Отговор от AI

В PostgreSQL при актуализиране или изтриване на редове, старите версии на редовете не се изтриват веднага, а стават "мъртви" (dead tuples). Това е свързано с MVCC (многоверсионен контрол на конкуренцията), който осигурява изолация на транзакциите. Мъртвите редове заемат място и могат да забавят работата на базата.

Командата VACUUM почиства тези мъртви редове, освобождавайки място и предотвратявайки растежа на таблиците и индексите. Има обикновен VACUUM, който просто маркира пространството като свободно, и VACUUM FULL, който допълнително компресира таблицата, намалявайки нейния физически размер.

Пример:

VACUUM моята_таблица;

По този начин VACUUM поддържа производителността и предотвратява прекомерната употреба на дисково пространство.