Sobes.tech
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. VACUUM puhastab vanu ID-sid.

VACUUM tüübid:

  • VACUUM: puhastab "surnud" read ja uuendab statistikat (kui ei ole määratud NOVACUUM). 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äärab transaction ID "vanadele" ridadele kuni väärtuseni OldestXID, vältides nende kustutamist tavalise VACUUM ajal 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.