Middle
233
Mis on VACUUM PostgreSQLis?
Vastus AI-lt
sobes.tech AI
Proces, mis puhastab "surnud" read, mis tekivad operatsioonide tulemusena:UPDATE ja DELETE.
- UPDATE — füüsiliselt ei kustuta vana rida, vaid loob uue.
- DELETE — märgib rea kui kustutatud, kuid ei kustuta seda füüsiliselt.
"Surnud" read võtavad ruumi kettal ja võivad aeglustada päringuid.
Peamised ülesanded:
- Ketta ruumi vabastamine: Tagastab ruumi, mis on hõivatud "surnud" ridadega, operatsioonisüsteemile.
- Statistika uuendamine: Kogub teavet andmete jaotuse kohta, aidates päringute optimeerijal luua tõhusamaid täitmisplaane.
- Transaktsiooni ID täitumise vältimine: Oluline andmete terviklikkuse säilitamiseks. Iga transaktsioonile omistatakse ID. Kui ID täitub, võivad vanad transaktsioonid olla valesti mõistetud kui tulevased, mis võib põhjustada andmete kaotsimineku.
VACUUMpuhastab vanu ID-sid.
VACUUM tüübid:
VACUUM: puhastab "surnud" read ja uuendab statistikat (kui ei ole määratudNOVACUUM). Ei taga ruumi operatsioonisüsteemile.VACUUM FULL: agressiivsem variant. Kirjutab kogu tabeli uuesti, eemaldades "surnud" read ja vabastades ruumi. Blokeerib tabeli kasutamise ajutiselt.VACUUM FREEZE: määrabtransaction ID"vanadele" ridadele kuni väärtuseniOldestXID, vältides nende kustutamist tavaliseVACUUMajal ja aidates vältida transaktsiooni ID täitumist.
Autovacuum:
PostgreSQLis on vaikimisi sisse lülitatud automaatne autovacuum. See automaatselt käivitab VACUUM ja ANALYZE tabelitele, mis on oluliselt muudetud. Selle parameetreid saab konfigureerida optimeerimiseks.
Näited:
-- Tabeli tavaline vakuum
VACUUM minu_tabel;
-- Ruumi täielik vabastamine
VACUUM FULL minu_tabel;
-- "Surnud" ridade "külmutamine"
VACUUM FREEZE minu_tabel;
Regulaarne VACUUM on oluline andmebaasi jõudluse ja tervise säilitamiseks.