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
VACUUMtisztítja a régi ID-ket.
A VACUUM típusai:
VACUUM: tisztítja a "halott" sorokat és frissíti a statisztikákat (ha nemNOVACUUMvan 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 atransaction ID-t a "régi" sorokhoz azOldestXIDértékig, megakadályozva azok törlését egy normálVACUUMsorá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.