Cuprins:
- Cache-ul bibliotecii din Oracle 12c
- Cache-ul dictionarului din Oracle 12c
- Memoria cache a rezultatelor serverului în Oracle 12c
- Piscina rezervată în Oracle 12c
- Cel mai puțin utilizat algoritm recent în Oracle 12c
Video: Metodica învățării elementelor de bază ale săriturilor în apă 2024
Anumite obiecte și dispozitive din Oracle 12c sunt utilizate frecvent. Prin urmare, este logic să-i pregătiți de fiecare dată când doriți să faceți o operațiune. Mai mult, datele din pool-ul comun nu sunt niciodată scrise pe disc.
Piscina comună în sine este alcătuită din patru domenii principale:
-
Cache de bibliotecă
-
Cache de dicționare
-
Cache de rezultate a serverului
-
Piscină rezervată
Cache-ul bibliotecii din Oracle 12c
Cache-ul bibliotecii este exact așa cum se numește: o bibliotecă. Mai precis, este o bibliotecă de instrucțiuni SQL gata de parcurs.
De fiecare dată când executați o instrucțiune SQL, se întâmplă o mulțime în fundal. Această activitate de fundal este numită parsarea . Parsarea poate fi destul de costisitoare în ceea ce privește puterea de procesare.
În timpul parsării, unele dintre aceste lucruri se întâmplă:
-
Sintaxa de declarație este verificată pentru a vă asigura că ați scris totul corect.
-
Obiectele la care te referi sunt verificate. De exemplu, dacă încercați să accesați un tabel numit EMPLOYEE, Oracle se asigură că acesta există în baza de date.
-
Oracle vă asigură că aveți permisiunea de a face ceea ce încercați să faceți.
-
Codul este convertit într-un format de bază de date. Formatul este numit cod de octet sau p.
-
Oracle determină calea sau planul optim. Aceasta este de departe partea cea mai scumpă.
De fiecare dată când executați o declarație, informațiile sunt stocate în cache-ul bibliotecii. În acest fel, data viitoare când executați instrucțiunea nu trebuie să apară prea mult (cum ar fi verificarea permisiunilor).
Cache-ul dictionarului din Oracle 12c
Cache-ul dictionarului este, de asemenea, frecvent folosit pentru parsare atunci cand executati SQL. Vă puteți gândi la aceasta ca la o colecție de informații despre dvs. și obiectele bazei de date. Poate verifica informații de tip fundal.
Cache-ul dicționarului este, de asemenea, guvernat de regulile algoritmului cel mai puțin utilizat recent: (LRU): Dacă nu are dimensiunea corectă, informațiile pot fi evacuate. A nu avea suficient spațiu pentru cache-ul dicționarului poate afecta utilizarea discului.
Deoarece definițiile obiectelor și informațiile bazate pe permisiuni sunt stocate în fișiere de baze de date, Oracle trebuie să citească discuri pentru a reîncărca acea informație în cache-ul dicționarului. Acest lucru necesită mai mult timp decât obținerea acestuia din cache-ul de memorie.Imaginați-vă un sistem cu mii de utilizatori care execută în mod constant SQL … o memorie cache a dicționarului poate împiedica performanța.
Ca și cache-ul bibliotecii, nu puteți controla direct mărimea cache-ului dictionarului. Pe măsură ce piscina globală partajată se modifică în mărime, la fel se face cache-ul dicționarului.
Memoria cache a rezultatelor serverului în Oracle 12c
Cache-ul pentru rezultatele serverului are două părți:
-
Cache de rezultate SQL: Această memorie cache permite Oracle să vadă că datele solicitate - solicitate de o instrucțiune SQL recent executată să fie stocate în memorie. Această situație permite Oracle să ignore partea de execuție a execuției, pentru lipsa unui termen mai bun și să meargă direct la setul de rezultate dacă există.
Cache-ul de rezultate SQL funcționează cel mai bine pe date relativ statice (cum ar fi descrierea unui articol de pe un site de comerț electronic).
În cazul în care vă faceți griji cu privire la rezultatul cache-ului care a returnat date incorecte? Deloc. Oracle invalidează automat datele stocate în cache-ul de rezultate dacă oricare dintre componentele care stau la baza acestora este modificată.
-
Memoria cache a rezultatelor funcției PL / SQL: Cache-ul rezultat al funcției PL / SQL stochează rezultatele unui calcul. De exemplu, spuneți că aveți o funcție care calculează valoarea dolarului pe baza cursului de schimb al monedei euro. S-ar putea să nu doriți să stocați acea valoare reală, deoarece se schimbă în mod constant.
În schimb, aveți o funcție care solicită o rată zilnică sau orară pentru a determina valoarea dolarului. Într-o aplicație financiară, această chemare se poate întâmpla de mii de ori pe oră. Prin urmare, în loc de executarea funcției, aceasta merge direct în cache-ul de rezultate PL / SQL pentru a obține datele între actualizările ratelor. Dacă rata se modifică, Oracle execută din nou funcția și actualizează memoria cache a rezultatelor.
Piscina rezervată în Oracle 12c
Atunci când Oracle trebuie să aloce o memorie contiguă (peste 5 KB) în bazinul partajat, el alocă memoria în rezervă rezervată. Dedicarea rezervelor rezervate pentru a gestiona alocările de memorie mari îmbunătățește performanța și reduce fragmentarea memoriei.
Cel mai puțin utilizat algoritm recent în Oracle 12c
Dacă cache-ul bibliotecii nu are spațiu suficient, obiectele sunt aruncate. Declarațiile care sunt utilizate cele mai de sejur în cache biblioteca cea mai lungă. Cu cât sunt folosite mai des, cu atât sunt mai puține șanse de a fi evacuate dacă cache-ul bibliotecii nu are spațiu.
Procesul de evacuare a cache-ului de bibliotecă se bazează pe ceea ce se numește algoritmul cel mai puțin folosit recent (LRU). Dacă biroul tău este aglomerat, ce mai punei pe primul loc? Chestiile pe care le folosiți cel mai puțin.
Nu puteți modifica dimensiunea cache-ului bibliotecii. Dimensiunea globală a bazinului comun determină acest lucru. Dacă credeți că sunt excizate prea multe declarații, puteți mări dimensiunea globală partajată a piscinei dacă o ajustați singuri. Dacă permiteți Oracle să facă tuning-ul, acesta captează memoria liberă din altă parte.