Senior
Какво прави VACUUM в PostgreSQL и защо се появяват мъртви редове?
sobes.tech AI
Отговор от AI
В PostgreSQL при актуализиране или изтриване на редове, старите версии на редовете не се изтриват веднага, а стават "мъртви" (dead tuples). Това е свързано с MVCC (многоверсионен контрол на конкуренцията), който осигурява изолация на транзакциите. Мъртвите редове заемат място и могат да забавят работата на базата.
Командата VACUUM почиства тези мъртви редове, освобождавайки място и предотвратявайки растежа на таблиците и индексите. Има обикновен VACUUM, който просто маркира пространството като свободно, и VACUUM FULL, който допълнително компресира таблицата, намалявайки нейния физически размер.
Пример:
VACUUM моята_таблица;
По този начин VACUUM поддържа производителността и предотвратява прекомерната употреба на дисково пространство.