Cuprins:
- Cache-ul tampon
- Se produce un punct de control complet sau parțial - atunci când sistemul scoate periodic toate bufferele murdare pe disc.
Video: Asus VivoBook S15 | Un laptop bun la toate | Unboxing & Review CEL.ro 2024
Oracle 12c memoria cache de bază de date este de obicei cea mai mare parte a SGA. Are date care provin din fișierele de pe disc. Deoarece accesarea datelor de pe disc este mai lentă decât din memorie, scopul unic al memoriei cache al bazei de date este să cacheze datele din memorie pentru un acces mai rapid.
Cache-ul de memorie tampon poate conține date de la toate tipurile de obiecte:
-
Tabele
-
Indexuri
-
Date de sistem
-
În memoria cache de memorie
, termenul tampon se referă la blocurile bazei de date. Un bloc de baze de date reprezintă cantitatea minimă de stocare pe care Oracle o citește sau o scrie. Toate segmentele de stocare care conțin date sunt alcătuite din blocuri. Când solicitați date de pe disc, la cel puțin Oracle citește un bloc. Chiar dacă solicitați un singur rând, este posibil ca mai multe rânduri din același tabel să fie preluate. Același lucru se întâmplă dacă solicitați o coloană într-un rând. Oracle citește întregul bloc, care are probabil mai multe rânduri și toate coloanele pentru acel rând.
Starea buffer-ului cache în Oracle 12c
Cache-ul tampon
controlează blocurile care stau să rămână, în funcție de spațiul disponibil și de starea blocului (similar cu modul în care piscina comună decide ce SQL rămâne să rămână). Cache-ul tampon utilizează propria versiune a algoritmului LRU. Free:
Nu este folosit în prezent pentru nimic
-
Conectivat: În prezent accesat > Dirty:
-
Blocul a fost modificat dar nu a fost încă scris pe disc Blocuri libere
-
În mod ideal, sunt disponibile blocuri libere ori de câte ori aveți nevoie de ele. Cu toate acestea, probabil că nu este cazul, cu excepția cazului în baza dvs. de date este atât de mic încât întregul lucru se poate potrivi în memorie. Algoritmul LRU funcționează puțin diferit în cache-ul tampon decât în pool-ul comun. Ea scoruri fiecare bloc și apoi ori cât timp a fost de când a fost accesat. De exemplu, un bloc obține un punct de fiecare dată când este atins.
Cu cât sunt mai mari punctele, cu atât este mai puțin probabil ca blocul să fie eliminat din memorie. Cu toate acestea, acesta trebuie accesat frecvent sau scorul scade. Un bloc trebuie să muncească din greu pentru a rămâne în memorie dacă concurența pentru resursele de memorie este mare.
Oferind fiecărui bloc un punctaj și un timp împiedică apariția acestui tip de situație: Un bloc este accesat intens la sfârșitul lunii pentru rapoarte.Scorul său este mai mare decât orice alt bloc din sistem. Acest bloc nu este niciodată accesat din nou.
Se așează acolo pierzând memoria până când baza de date se repornește sau altul blocuri în cele din urmă scor suficient de puncte pentru a bate-l afară. Componenta de timp se scurge foarte repede după ce nu mai aveți acces la ea.
Blocuri decupate
Un bloc accesat în prezent este un bloc fixat
Blocul este blocat (sau fixat) în cache-ul tampon, astfel încât acesta nu poate fi maturat din memoria cache în timp ce procesul Oracle (adesea reprezentând un utilizator) îl accesează.
Blocuri murdare Un bloc modificat este un bloc murdar .
Pentru a vă asigura că modificările sunt păstrate în întreruperile bazei de date, aceste blocuri murdare trebuie să fie scrise din cache-ul tampon pe disc. Baza de date numește blocuri murdare într-o listă murdară sau coadă de scriere.
S-ar putea să credeți că de fiecare dată când un bloc este modificat, acesta ar trebui să fie scris pe disc pentru a minimiza datele pierdute. Nu este cazul - nici măcar atunci când există un comite (când salvați permanent modificările)! Mai multe structuri ajută la prevenirea pierderilor de date.
În plus, Oracle are o problemă cu jocurile de noroc. Performanța sistemului ar fi accesat cu crawlere dacă ați scris blocuri pe disc pentru fiecare modificare. Pentru a combate acest lucru, Oracle joacă șansele că baza de date este puțin probabil să eșueze și scrie blocuri pe disc numai în grupuri mai mari. Nu vă îngrijorați; nu este nici măcar un risc împotriva datelor pierdute. Oracle obține performanța din baza de date chiar acum
cu posibila cheltuială a unei recuperări care durează mai mult
mai târziu. Deoarece eșecurile pe sisteme gestionate corespunzător rareori apar, este o modalitate ieftină de a obține performanțe. Cu toate acestea, nu este ca și cum Oracle va lăsa blocuri murdare peste tot, fără a se curăța de la sine. Blochează declanșatorii de scriere în Oracle 12c Ce declanșează un bloc de scriere și deci un bloc murdar? Baza de date este emisă o comandă de închidere.
Se produce un punct de control complet sau parțial - atunci când sistemul scoate periodic toate bufferele murdare pe disc.
Un prag de timp de recuperare, setat de dvs., este îndeplinit; numărul total de blocuri murdare determină un timp de recuperare inacceptabil.
-
Este necesar un bloc gratuit și nu se găsesc după un anumit număr de căutări.
-
Anumite comenzi pentru limbajul de definiție a datelor (DDL). (Comenzile DDL sunt instrucțiuni SQL care definesc obiecte într-o bază de date.)
-
La fiecare trei secunde.
-
Alte motive. Algoritmul este complex și nu puteți fi sigur cu toate schimbările care apar la fiecare lansare de software.
-
Faptul este că baza de date rămâne destul de ocupată pentru scrierea blocurilor într-un mediu în care există multe schimbări.