Oracle Analytics Cloud menţine o memorie cache locală, a seturilor de rezultate ale interogărilor din cache-ul de interogări.
Subiecte:
Cache-ul de interogări permite Oracle Analytics Cloud să satisfacă multe solicitări de interogare ulterioare fără să acceseze surse de date backend (aflate pe server), iar acest lucru creşte performanţa interogărilor. Totuşi, intrările din cache-ul de interogări pot deveni perimate, pe măsură ce se produc actualizări la sursele de date backend (aflate pe server).
Cel mai rapid mod de a procesa o interogare este de a omite cea mai mare parte a procesării şi de a utiliza un răspuns antecalculat.
Cu stocarea în cache a interogărilor, Oracle Analytics Cloud stochează rezultatele antecalculate ale interogărilor într-o memorie cache locală. Dacă o altă interogare poate utiliza acele rezultate, atunci întreaga procesare a bazei de date pentru interogarea respectivă este eliminată. Acest lucru poate duce la îmbunătăţiri semnificative ale timpului mediu de răspuns al interogării.
În plus faţă de îmbunătăţirea performanţei, posibilitatea de a răspunde la o interogare dintr-o memorie cache locală conservă resursele din reţea şi reduce timpul de procesare pe serverul bazei de date. Resursele de reţea sunt conservate, deoarece rezultatele intermediare nu sunt returnate către Oracle Analytics Cloud. Faptul că nu se mai rulează interogarea pe baza de date, eliberează serverul bazei de date pentru a efectua alte lucrări. În cazul în care baza de date utilizează un sistem de stornare, rularea a mai puţine interogări ar putea reduce, de asemenea, costurile cuprinse în buget.
Un alt beneficiu al utilizării memoriei cache pentru a răspunde la o interogare îl constituie economiile realizate prin reducerea timpului de procesare pe Oracle Analytics Cloud, mai ales dacă rezultatele interogării sunt preluate din mai multe baze de date. În funcţie de interogare, s-ar putea să existe o procesare considerabilă pentru asociere şi sortare în server. Dacă interogarea este deja calculată, atunci această procesare este evitată, eliberând resursele serverului pentru alte sarcini.
Pentru a rezuma, memoria cache de interogări poate îmbunătăţi spectaculos performanţa interogării şi poate reduce traficul în rețea, procesarea bazei de date şi cheltuielile generale de procesare.
Stocarea în cache a interogărilor are multe beneficii evidente, dar şi anumite costuri.
Posibilitatea ca rezultatele stocate în cache să fie perimate
Costuri administrative de gestionare a memoriei cache
Cu gestionarea memoriei cache, beneficiile depăşesc în general cu mult costurile.
Unele sarcini administrative sunt asociate cu stocarea în cache. Este necesar să setaţi timpul de persistență a memoriei cache pentru fiecare tabel fizic în mod corespunzător, ştiind cât de des sunt actualizate datele din acel tabel.
Atunci când frecvenţa actualizării variază, este necesar să urmăriţi când apar modificări şi să goliţi manual memoria cache, atunci când este necesar.
Dacă intrările din memoria cache nu sunt golite atunci când datele din bazele de date esenţiale se modifică, atunci este posibil ca interogările să returneze rezultate care sunt perimate.
Este necesar să evaluaţi dacă acest lucru este acceptabil. Este posibil să fie acceptabil să se permită ca memoria cache să conţină şi unele date perimate. Este necesar să decideţi ce nivel de date perimate este acceptabil şi apoi să configuraţi (şi să urmaţi) un set de reguli pentru a reflecta acele niveluri.
De exemplu, să presupunem că o aplicaţie analizează date corporatiste dintr-un conglomerat mare, iar dumneavoastră efectuaţi rezumate anuale ale diferitelor divizii din companie. Noile date nu afectează semnificativ interogările, deoarece noile date afectează doar rezumatele de anul viitor. În acest caz, compromisurile în a decide dacă să se golească sau nu memoria cache, ar putea favoriza lăsarea intrărilor în memoria cache.
Să presupunem, totuşi, că bazele de date sunt actualizate de trei ori pe zi şi că efectuaţi interogări asupra activităţilor din ziua curentă. În acest caz, este necesar să goliţi mult mai des memoria cache sau, eventual, luaţi în calcul să nu utilizaţi deloc memoria cache.
Un alt scenariu este să regeneraţi de la început setul de date la intervale periodice (de exemplu, o dată pe săptămână). În acest exemplu, aveţi posibilitatea să goliţi întreaga memorie cache ca parte a procesului de regenerare a setului de date, asigurându-vă astfel că nu aveţi niciodată date perimate în memoria cache.
Indiferent de situaţia în care vă aflaţi, este necesar să evaluaţi ce este acceptabil în legătură cu informaţiile vechi returnate către utilizatori.
În cazul în care conectarea partajată este activată pentru un anumit centralizator de conexiuni, atunci memoria cache poate fi partajată între utilizatori şi nu trebuie să fie populată pentru fiecare utilizator.
În cazul în care conectarea partajată nu este activată şi se utilizează o conectare la o bază de date specifică utilizatorului, atunci fiecare utilizator generează propria intrare în memoria cache.
În Oracle Analytics Cloud, cache-ul de interogări este activat în mod prestabilit. Puteţi activa sau dezactiva plasarea în cache a interogărilor, în pagina Setări de sistem avansate.
Pentru a gestiona modificările din bazele de date esenţiale şi pentru a monitoriza intrările în memoria cache, este necesar să dezvoltaţi o strategie de gestionare a memoriei cache.
Aveţi nevoie de un proces pentru a invalida intrările în memoria cache atunci când datele din tabelele esenţiale care compun intrările în memoria cache se modifică şi un proces pentru a monitoriza, identifica şi elimina orice intrări nedorite în memoria cache.
Acest capitol conţine următoarele subiecte:
Alegerea unei strategii de gestionare a memoriei cache depinde de volatilitatea datelor din bazele de date fundamentale şi de predictibilitatea modificărilor care produc această volatilitate.
De asemenea, ea depinde de numărul şi de tipurile de interogări care alcătuiesc memoria cache şi de gradul de utilizare al acelor interogări. Această secţiune oferă o prezentare generală a diferitelor abordări în gestionarea memoriei cache.
Puteţi dezactiva stocarea în cache pentru întregul sistem, pentru a opri toate intrările noi în memoria cache şi pentru a opri orice interogări noi să utilizeze memoria cache existentă. Dezactivarea memoriei cache vă permite să o activaţi ulterior, fără a pierde nicio intrare stocată în respectiva memorie cache.
Dezactivarea temporară a memoriei cache este o strategie utilă, în situaţiile în care se poate suspecta că aveţi intrări perimate în memoria cache, dar doriţi să verificaţi dacă acestea sunt cu adevărat perimate, înainte de a goli acele intrări sau întreaga memorie cache. Dacă descoperiţi că datele stocate în memoria cache sunt încă relevante sau după ce aţi golit în siguranţă intrările problemă, atunci puteţi activa în siguranţă memoria cache. Dacă este necesar, goliţi întreaga memorie cache sau memoria cache care este asociată cu un anumit model de business, înainte de a activa din nou memoria cache.
Puteţi seta un atribut ce poate fi stocat în memoria cache pentru fiecare tabel fizic, permiţându-vă să specificaţi dacă interogările pentru tabelul respectiv sunt adăugate în memoria cache, pentru a răspunde la interogări viitoare.
Dacă activaţi stocarea în cache pentru un tabel, atunci orice interogare care implică tabelul respectiv este adăugată în memoria cache. Toate tabelele pot fi stocate, în mod prestabilit, în cache, dar unele tabele pot să nu fie buni candidaţi de inclus în cache, cu excepţia cazului în care utilizaţi setări corespunzătoare pentru durata de persistenţă a memoriei cache. De exemplu, să presupunem că aveţi un tabel care stochează datele indicelui bursier, care sunt actualizate la fiecare minut. Puteţi specifica dacă doriţi să goliţi intrările pentru acel tabel la fiecare 59 de secunde.
De asemenea, puteţi utiliza câmpul setările pentru durata de persistenţă a memoriei cache pentru a specifica cât timp sunt stocate intrările pentru acest tabel în memoria cache de interogări. Acest lucru este util pentru sursele de date care sunt actualizate frecvent.
În Model Administration Tool, din stratul fizic, faceţi dublu clic pe tabelul fizic.
Dacă utilizaţi modelatorul semantic, consultaţi Ce sunt proprietăţile generale ale unui tabel fizic?.
În dialogul de proprietăţi pentru Tabel fizic, în fila General, efectuați una dintre următoarele selectări:
Pentru a activa stocarea în cache, selectaţi Poate fi stocat în cache.
Pentru a împiedica stocarea în cache a unui tabel, deselectaţi Poate fi stocat în cache.
Pentru a seta un timp de expirare a memoriei cache, specificați o Durată de persistenţă cache şi specificaţi o unitate de măsură (zile, ore, minute sau secunde). Dacă nu doriţi ca intrările din memoria cache să expire automat, selectaţi Memoria cache nu expiră niciodată.
Faceţi clic pe OK.
Atunci când modificaţi modelele semantice utilizând modelatorul semantic sau Model Administration Tool, modificările pot afecta intrările care sunt stocate în cache. De exemplu, dacă modificaţi definiţia unui obiect fizic sau a unei variabile dinamice pentru modelul semantic, este posibil ca intrările din memoria cache care fac referire la acel obiect sau acea variabilă să nu mai fie valide. Aceste modificări ar putea conduce la necesitatea de a goli memoria cache. Există două scenarii de luat în considerare: atunci când modificaţi modelul semantic existent şi atunci când creaţi (sau încărcaţi) un nou model semantic.
Modificări aduse modelului semantic
Atunci când modificaţi un model semantic sau încărcaţi un alt fişier .rpd, orice modificări pe care le efectuaţi şi care afectează intrările din cache, duc automat la golirea tuturor intrărilor din cache care se referă la obiectele modificate. Golirea survine atunci când încărcaţi modificările. De exemplu, dacă ştergeţi un tabel fizic dintr-un model semantic, atunci toate intrările din cache care fac referire la acel tabel sunt eliminate după încărcare. Toate modificările aduse unui model semantic din stratul logic elimină toate intrările din cache pentru modelul semantic respectiv.
Modificările aduse variabilelor globale ale unui model semantic
Valorile variabilelor globale ale unui model semantic sunt reactualizate cu datele returnate din interogări. Atunci când definiţi o variabilă globală a unui model semantic, creaţi un bloc de iniţializare sau utilizaţi unul preexistent care conţine o interogare SQL. De asemenea, configuraţi o programare pentru a rula interogarea şi reactualizaţi periodic valoarea acelei variabile.
Dacă valoarea unei variabile globale a unui model semantic se modifică, atunci orice intrare din memoria cache, care utilizează această variabilă într-o coloană, devine învechită şi este generată o intrare nouă în memoria cache, dacă datele din intrarea respectivă sunt din nou necesare. Vechea intrare din cache nu este eliminată imediat, ci rămâne acolo până când este curăţată prin mecanismul obişnuit de stocare în cache.
Unul dintre principalele avantaje ale memorării în cache a interogărilor este îmbunătăţirea performanţei aparente a interogărilor.
Stocarea în cache a interogărilor poate fi preţioasă, populând memoria cache în afara orelor de program, prin rularea interogărilor şi stocarea în cache a rezultatelor acestora. O bună strategie de populare necesită să ştiţi când au loc accesările la memoria cache.
Dacă doriţi să populaţi memoria cache pentru toţi utilizatorii, puteţi să populaţi memoria cache cu următoarea interogare:
SELECT User, SRs
După popularea memoriei cache utilizând SELECT User, SRs
, următoarele interogări sunt accesări ale memoriei cache:
SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (şi utilizatorul a fost USER1) SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (şi utilizatorul a fost USER2) SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (şi utilizatorul a fost USER3)
Acest capitol conţine următoarele subiecte:
Atunci când este activată plasarea în memoria cache, fiecare interogare este evaluată pt. a stabili dacă se califică pt. o reuşită cache.
O reuşită cache înseamnă că Oracle Analytics Cloud a putut folosi memoria cache pt. a răspunde la interogare şi că nu a accesat deloc baza de date. Oracle Analytics Cloud poate folosi cache-ul de interogării pt. a răspunde la interogări la acelaşi nivel de agregare sau la un nivel superior.
Sunt mulţi factori care determină existenţa unei reuşite cache. Tabelul de mai jos descrie aceşti factori.
Factor sau regulă | Descriere |
---|---|
Trebuie să se potrivească un subset de coloane din lista |
Toate coloanele din lista Această regulă descrie cerinţa minimă pentru o reuşită cache, dar respectarea acestei reguli nu garantează o reuşită cache. Se aplică şi celelalte reguli listate în acest tabel. |
Coloanele din lista |
Oracle Analytics Cloud poate calcula expresii pe rezultatele din memoria cache pt. a răspunde la noua interogare, dar în rezultatul din memoria cache trebuie să existe toate coloanele. De exemplu, interogarea: SELECT product, month, averageprice FROM sales WHERE year = 2000 are rezultate cache pe interogarea: SELECT product, month, dollars, unitsales FROM sales WHERE year = 2000 deoarece |
clauza |
Pentru ca interogarea să se califice drept o reuşită cache, constrângerile clauzei O clauză
În plus, coloanele folosite pe clauza SELECT employeename FROM employee, geography WHERE region in ('EAST', 'WEST') Nu are drept rezultat o reuşită cache pt. interogarea de bază din lista precedentă, deoarece REGION nu se află pe lista de proiecţii. |
Interogările doar cu dimensiune trebuie să fie o corespondenţă exactă |
Dacă o interogare este doar cu dimensiune, adică în interogare nu este inclus niciun fapt şi nicio măsură, atunci doar o corespondenţă exactă a coloanelor de proiecţie ale interogării din memoria cache reuşeşte în cache. Acest comportament previne apariţia falselor pozitive atunci când există mai multe surse logice pt. un tabel de dimensiuni. |
Interogările cu funcţii speciale trebuie să fie corespondenţe exacte |
Alte interogări care conţin funcţii speciale, precum funcţii de serii de timp ( |
Seturile de tabele logice trebuie să corespundă |
Pentru a se califica drept reuşite cache, toate interogările de intrare trebuie să aibă acelaşi set de tabele logice ca şi intrarea din memoria cache. Această regulă evită reuşitele cache false. De exemplu, |
Valorile de variabile de sesiune trebuie să corespundă, inclusiv variabilele sesiunii de securitate |
Dacă declaraţia SQL logică sau cea SQL fizică face referire la orice variabilă de sesiune, atunci valorile variabile de sesiune trebuie să corespundă. Altfel, nu este o reuşită cache. În plus, valoarea variabilelor de sesiune ce ţin cont de securitate trebuie să corespundă cu valorile variabilelor de securitate a sesiunii, definite în modelul semantic, chiar dacă instrucţiunea logică SQL în sine nu face referire la variabilele de sesiune. Consultaţi Asigurarea unor rezultate corecte în memoria cache, atunci când se utilizează securitatea bazei de date la nivel de rând. |
Condiţii de reunire echivalente |
Tabelul logic reunit rezultat al unei cereri noi de interogare trebuie să fie acelaşi cu (sau un subset al) rezultatelor din memoria cache pt. a se califica drept reuşită cache. |
Atributul |
Dacă o interogare din memoria cache elimină înregistrările duplicate prin procesare |
Interogările trebuie să conţină niveluri de agregare compatibile |
Interogările care cer un nivel agregat de informaţii pot folosi rezultatele din memoria cache la un nivel mai scăzut de agregare. De exemplu, următoarea interogare cere cantitatea vândută la nivel de furnizor şi regiune şi localitate: SELECT supplier, region, city, qtysold FROM suppliercity Următoarea interogare cere cantitatea vândută la nivel de localitate: SELECT city, qtysold FROM suppliercity A doua interogare are drept rezultat o reuşită cache pe prima interogare. |
Agregare suplimentară limitată |
De exemplu, dacă o interogare cu coloana |
Clauza |
Interogările care ordonează după coloane care nu sunt conţinute în lista de selectare au drept rezultat ratări cache. |
Diagnosticarea comportamentului de reuşite cache |
Pentru a evalua mai bine comportamentul reuşitelor cache, setaţi variabila de sesiune ENABLE_CACHE_DIAGNOSTICS la valoarea 4, aşa cum este ilustrat în următorul exemplu: ENABLE_CACHE_DIAGNOSTICS=4 |
Atunci când utilizaţi o strategie de securitate a bazei de date la nivel de rând, cum ar fi o bază de date privată virtuală (VPD), rezultatele datelor returnate sunt condiţionate de acreditările de autorizare ale utilizatorului.
Din acest motiv, Oracle Analytics Cloud trebuie să ştie dacă o sursă de date utilizează securitatea bazei de date la nivel de rând şi ce variabile sunt relevante pentru securitate.
Pentru a vă asigura că accesările reuşite la memoria cache se produc numai pe intrările din memoria cache care includ şi corespund tuturor variabilelor sensibile din punct de vedere al securităţii, este necesar să configuraţi corect obiectul din baza de date şi obiectele variabile din cadrul sesiunii în Model Administration Tool, după cum urmează:
Obiect din baza de date. În stratul Fizic, în fila General a casetei de dialog Bază de date, selectaţi Bază de date privată virtuală pentru a specifica faptul că sursa de date utilizează securitatea bazei de date la nivel de rând.
Dacă utilizaţi securitatea bazei de date la nivel de rând cu plasarea în cache partajată, atunci trebuie să selectaţi această opţiune pentru a preveni partajarea intrărilor din cache ale căror variabile sensibile la securitate nu corespund.
Obiect variabil la sesiune. Pentru variabilele legate de securitate, în caseta de dialog Variabilă sesiune, selectaţi Sensibil la securitate pentru a le recunoaşte ca fiind sensibile la securitate atunci când se utilizează o strategie de securitate a bazei de date la nivel de rând. Această opţiune asigură faptul că intrările în memoria cache sunt marcate cu variabilele sensibile la securitate, permiţând asocierea variabilelor sensibile la securitate pe toate interogările de intrare.
Pentru a maximiza accesările potenţiale ale memorie cache, o strategie este de a rula o suită de interogări pentru a popula memoria cache.
În continuare sunt câteva recomandări pentru tipurile de interogări, pe care să le utilizaţi la crearea unei suite de interogări cu care să se populeze memoria cache.
Interogări comune generate anterior. Interogările care sunt rulate frecvent, în special acelea care sunt costisitoare la procesare, sunt interogări excelente de populare a memoriei cache. Interogările ale căror rezultate sunt înglobate în tablouri dashboard, sunt bune exemple de interogări comune.
Liste SELECT fără nicio expresie. Eliminarea expresiilor pe coloanele listei SELECT
extinde posibilitatea de accesări reuşite la memoria cache. O coloană stocată în cache cu o expresie, poate răspunde doar la o interogare nouă cu aceeaşi expresie; o coloană stocată în cache fără nicio expresie, poate răspunde la o solicitare pentru acea coloană cu orice expresie. De exemplu, o solicitare stocată în cache, cum ar fi:
SELECT QUANTITY, REVENUE...
poate răspunde la o interogare nouă, cum ar fi:
SELECT QUANTITY/REVENUE...
dar nu şi invers.
Nicio clauză WHERE. Dacă nu există nicio clauză WHERE
într-un rezultat stocat în cache, atunci aceasta poate fi folosită pentru a răspunde la interogări care satisfac regulile de reuşite cache pentru lista de selectare, cu orice clauză WHERE
care include coloane în lista de proiecţii.
În general, cele mai bune interogări cu care să se populeze memoria cache sunt interogări care consumă puternic resursele de procesare a bazei de date şi care sunt susceptibile de a fi reemise. Aveţi grijă să nu populaţi memoria cache cu interogări simple care returnează multe rânduri. Aceste interogări (de exemplu, SELECT * FROM PRODUCTS
, unde PRODUCTS
se mapează direct la un singur tabel de bază de date) necesită foarte puţină procesare a bazei de date. Costul acestora reprezintă costuri indirecte pentru reţea şi discuri, factori pe care stocarea în cache nu îi atenuează.
Atunci când Oracle Analytics Cloud reactualizează variabilele unui model semantic, examinează modele de business, pentru a stabili dacă acestea fac referire la acele variabile ale modelului semantic. Dacă o fac, Oracle Analytics Cloud goleşte toată memoria cache pentru acele modele de business. Consultaţi Modul în care modificările aduse modelului semantic afectează cache-ul de interogări.
Puteţi configura agenţi care să populeze cache-ul de interogări Oracle Analytics Cloud.
Popularea memoriei cache poate îmbunătăţi timpul de răspuns pentru utilizatori, atunci când aceştia efectuează analize sau vizualizează analize care sunt înglobate în tablourile dashboard pe care le au. Puteţi realiza acest lucru prin programarea agenţilor să ruleze solicitări care reactualizează aceste date.
Singura diferenţă dintre agenţii de populare a memoriei cache şi alţi agenţi este că aceştia golesc automat memoria cache anterioară şi nu apar pe dashboard ca alerte.
Notă:
Agenţii de populare a memoriei cache golesc doar interogările cu asociere exactă, astfel că este posibil să existe în continuare date învechite. Asiguraţi-vă că strategia de stocare în cache include întotdeauna golirea memoriei cache, deoarece interogările agenţilor nu abordează interogări sau detalieri ad-hoc.Golirea memoriei cache şterge intrările din cache-ul de interogări şi vă păstrează proaspăt conţinutul. Puteţi goli automat intrările din memoria cache pentru anumite tabele, prin setarea câmpului Durată de persistenţă memorie cache pentru fiecare tabel din Model Administration Tool.
Notă:
Dacă utilizaţi modelatorul semantic, consultaţi Ce sunt proprietăţile generale ale unui tabel fizic?
Acest lucru este util pentru sursele de date care sunt actualizate frecvent. De exemplu, dacă aveţi un tabel care stochează datele indicelui bursier, care este actualizat la fiecare minut, puteţi utiliza setarea Durată de persistenţă cache pentru a goli intrările pentru acel tabel la fiecare 59 de secunde. Consultaţi Temporizarea utilizată la memoria cache şi persistenţa cache pentru tabelele fizice specificate.