Sobes.tech
Middle
232

Mi az a VACUUM a PostgreSQL-ben?

Válasz az MI-től

sobes.tech MI

A "halott" sorok tisztítási folyamata, amelyek az UPDATE és DELETE műveletek eredményeként keletkeznek.

  • UPDATE — nem törli fizikailag a régi sor verzióját, hanem újat hoz létre.
  • DELETE — megjelöli a sort töröltként, de fizikailag nem törli.

A "halott" sorok helyet foglalnak a lemezen, és lassíthatják a lekérdezéseket.

Fő feladatok:

  • Lemezterület felszabadítása: Visszaadja a "halott" sorok által foglalt helyet az operációs rendszernek.
  • Statisztikák frissítése: Információkat gyűjt az adatok eloszlásáról, segítve a lekérdezés-optimalizálót hatékonyabb végrehajtási tervek készítésében.
  • A tranzakciószámláló túlcsordulásának (wraparound) megelőzése: Fontos az adatok integritásának fenntartásához. Minden tranzakció ID-t kap. Ha az ID túlcsordul, a régi tranzakciók hibásan értelmezhetők jövőként, ami adatvesztéshez vezethet. A VACUUM tisztítja a régi ID-ket.

A VACUUM típusai:

  • VACUUM: tisztítja a "halott" sorokat és frissíti a statisztikákat (ha nem NOVACUUM van megadva). Nem ad vissza helyet az operációs rendszernek.
  • VACUUM FULL: agresszívebb változat. Újraírja az egész táblát, eltávolítja a "halott" sorokat és felszabadítja a helyet. A végrehajtás ideje alatt blokkolja a hozzáférést a táblához.
  • VACUUM FREEZE: beállítja a transaction ID-t a "régi" sorokhoz az OldestXID értékig, megakadályozva azok törlését egy normál VACUUM során, és segít megelőzni a tranzakciószámláló túlcsordulását.

Autovacuum:

Alapértelmezés szerint a PostgreSQL-ben az autovacuum folyamat be van kapcsolva. Automatikusan futtatja a VACUUM és ANALYZE parancsokat (statisztikák frissítése) a jelentősen módosított táblákon. Paraméterei módosíthatók az optimalizáció érdekében.

Használati példa:

-- Normál vacuum egy táblán
VACUUM az_en_tabla;

-- Teljes helyfelszabadítással végzett vacuum
VACUUM FULL az_en_tabla;

-- "Fagyasztással" ellátott ID-k
VACUUM FREEZE az_en_tabla;

A rendszeres VACUUM végrehajtásának fontossága:

A vacuum rendszeres végrehajtása, manuálisan vagy autovacuum által, kritikus a PostgreSQL adatbázis teljesítményének és egészségének fenntartásához.