Kodulehed
[387] - Andmebaasid II (ITI0207) (sügis 2024)
Esiletöstetud Kiirvalik
Lisainfo Kõige olulisemate tegevuste kiirvalik. Failide saatmiseks valige Vastamine alt sobiv ülesanne.
Üldist
Materjalid
LisainfoMaterjalide kataloogid.
Värvilised mummud tähistavad hinnangulist kataloogide lugemise vajadust. Roheline - suurim, kollane - keskmine, punane või mummuta - väikseim
Isiklik
Lisainfo Info ainult Sulle - teised kasutajad seda ei näe
Abi
Lisainfo Võimalus küsida õppejõult abi (nagu foorum, kus saab küsida küsimusi ja kommenteerida vastuseid)
Mitmesugust
Abi / Kasutajatugi / PostgreSQL

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Anonüümne (06.10.2023 12:48):
Kuidas teha kindlaks, kas PostgreSQL andmebaasisüsteem viib läbi automaatset prügikoristust?
Vastus (22.10.2023 19:31): Prügikoristus on vajalik, sest PostgreSQL kasutab multiversioon konkurentsjuhtimist (multiversion concurrency control), mis tähendab, et rea lugemine ei takista samal ajal selle sama rea muutmist ning rea muutmine ei takista samal ajal selle rea lugemist. See eeldab rea muutmisel või kustutamisel selle vana versiooni säilitamist andmebaasisüsteemi poolt. Vana versioon tuleb säilitada kuni leidub mõni tehing, mis võib vajada selle lugemist. Kui selliseid tehinguid enam ei ole, siis tuleks ridade vanad versioonid kettalt füüsiliselt kustutada ja seda teebki prügikoristus. Prügikoristust saab algatada käsitsi VACUUM lausega. Lisaks saab sisse lülitada automaatse prügikoristuse. Prügikoristusega koos saab ka värskendada andmebaasi statistikat. Andmebaasi statistika annab andmebaasisüsteemile infot andmebaasis olevate andmete kohta (nt kui palju ridu on tabelis) ja seda on andmebaasisüsteemil vaja, et koostada võimalikult täpseid täitmisplaane. Seega peaks statistika olema võimalikult täpne ja ajakohane.

Üks võimalus automaatse prügikoristuse toimimise kontrollimiseks on teha päring süsteemikataloogi tabeli põhjal.

SELECT name, setting, short_desc
FROM pg_settings
WHERE name LIKE 'autovacuum%' OR
name='track_counts'
ORDER BY name;

Kui autovacuum=on ja track_counts=on, siis on automaatne prügikoristus serveris sisse lülitatud.

  • autovacuum_vacuum_threshold - minimaalne muudetud või kustutatud ridade arv, mis käivitab tabeli automaatse prügikoristuse. Vaikimisi 50.
  • autovacuum_vacuum_insert_threshold - minimaalne lisatud ridade arv, mis käivitab tabeli automaatse prügikoristuse. Vaikimisi 1000.
  • autovacuum_analyze_threshold - minimaalne lisatud, muudetud või kustutatud ridade arv, mis käivitab tabeli statistika automaatse värskendamise. Vaikimisi 50.
Rohkem infot juhtparameetrite kohta on SIIN.

Järgnev päring leiab iga kasutaja skeemis oleva tabeli kohta, millal viimati selle prügi koristati või statistikat värskendati (käsitsi või automaatselt).

SELECT
schemaname, relname,
last_vacuum, last_autovacuum,
vacuum_count, autovacuum_count,
last_analyze, last_autoanalyze,
analyze_count, autoanalyze_count
FROM pg_stat_user_tables
ORDER BY schemaname, relname;

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!