Kodulehed
[385] - Andmebaasid II (ITI0207) (sügis 2023)
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 / Andmebaasisüsteemid (Üldine)

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Eerik Sven Puudist (16.01.2022 15:48):
Töökiiruse tõstmiseks ei kirjuta andmebaasisüsteemid andmemuudatusi kohe kettale, küll aga kirjutavad kohe kettale andmemuudatuse kohta käiva logi. Kuidas see töökiirust tõstab? Logi kirjutamine on ju samuti kõvaketta poole pöördumine. Kirjeldasite, et bloki kettale salvestamisel kustutatakse see muutmälust ära. Seega proovid süsteem salvestamist edasi lükata, kuna blokki võib kohe järgmistes päringutes jälle vaja olla ning oleks hea, kui see oleks muutmälus olemas. Miks mitte blokki kettale kirjutada, kuid jätta see ka muutmällu alles?
Vastus: Logi kirjutamine enne muudatusi sisalduvate plokkide (räpaste plokkide) kettale kirjutamist pakub paindlikust, sest andmebaasisüsteem saab nende plokkide kettale kirjutamist edasi lükata ja valida selleks selleks endale sobivaima aja. Meetodit, kus enne andmemuudatuste kettale kirjutamist kirjutatakse alati kettale muudatuste logi, nimetatakse Write-Ahead Logging (WAL).

PostgreSQL dokumentatsioon kirjutab: WAL kasutamine viib märkimisväärselt väiksema hulga kettale kirjutamisteni (ajal kui serveril on suur koormus), sest transaktsiooni tulemuste püsiva salvestamise tagamiseks (D omadus transaktsioonide ACID omadustest) piisab logi kettale kirjutamisest ja ei ole vaja (kohe) kettale kirjutada muudetud plokke. Logifaili kirjutatakse järjestikuliselt (uus logi läheb kõige lõppu) ja see maksab palju vähem, kui muudetud plokkide kettalt üles otsimine (need võivad olla erinevates ketta piirkondades) ja uue versiooniga asendamine. See kehtib eriti serverite puhul, mis peavad toime tulema paljude väikeste andmete muutmise transaktsioonidega, kusjuures muudetavaid andmeid sisaldavad plokid on kettal füüsiliselt laiali. Paljude samaaegsete väikeste transaktsioonide korral võib üks logi kettale kirjutamine (üks kord fsync() funktsiooni täitmine) kirjutada kettale korraga logi paljude transaktsioonide kohta.

Kogu andmebaasi töö ajal muutmälus hoidmine (in-memory database)  on üks töökiiruse parandamise meede, mida uue põlvkonna andmebaasisüsteemid kasutavad. Piirid seavad ette andmebaasi andmemaht ja serveri muutmälu suurus. Enamik andmebaasisüsteeme toimib ikkagi niimoodi, et muutmälus on töö ajal vaid osa andmebaasist. Uutele andmetele ruumi tegemiseks kasutatakse näiteks Least-Recently Used algoritmi, st esimesena kustutatakse muutmälust plokid, mille viimasest kasutamisest on möödas kõige rohkem aega.

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!