Sobes.tech
Senior

Čo robí VACUUM v PostgreSQL a prečo sa objavujú mŕtve riadky?

sobes.tech AI

Odpoveď od AI

V PostgreSQL, keď aktualizujete alebo odstránite riadky, staré verzie riadkov sa neodstraňujú okamžite, ale stávajú sa "mŕtvymi tuplemi" (dead tuples). To súvisí s MVCC (Multi-Version Concurrency Control), ktorá zabezpečuje izoláciu transakcií. Mŕtve riadky zaberajú miesto a môžu spomaliť výkon databázy.

Príkaz VACUUM vyčistí tieto mŕtve riadky, uvoľní miesto a zabráni rastu tabuliek a indexov. Existuje bežný VACUUM, ktorý iba označí priestor ako voľný, a VACUUM FULL, ktorý ďalej stlačí tabuľu a zníži jej fyzickú veľkosť.

Príklad:

VACUUM moja_tabulka;

Týmto spôsobom VACUUM udržiava výkon a zabraňuje nadmernému využívaniu diskového priestoru.