Documente Academic
Documente Profesional
Documente Cultură
BAZE DE DATE
Cutarea datelor ntr-o baz de date a reprezentat dintotdeauna o activitate consumatoare de timp i spaiu; Sistemul de gestiune a bazelor de date relaionale (SGBDR) are sarcina de a alege cea mai puin costisitoare metod de execuie a unei cereri de regsire; Costul de execuie este msurat de obicei prin timpul de rspuns, dar i prin resursele fizice implicate n procesul execuiei cererii de regsire a datelor (n termeni de memorie, CPU, operaii de I/O);
minimizarea costului de execuie
Optimizarea alocrii
prin definiie, bazele de date sunt mari consumatoare de spaiu, att n memoria intern, ct i n cea extern pentru folosirea ct mai eficient a acestora, SGBDR folosesc diverse mecanisme: reutilizarea, realocarea, zone de memorie cu destinaie special, comprimarea datelor, alocarea dinamic
Optimizarea accesului
prin definiie, cutarea datelor ntr-o baz de date este o activitate consumatoare de timp, din cauza volumului mare de date stocate i a complexitii SGBDR prezint cele mai bune performane din punctul de vedere al regsirii datelor, datorit limbajelor relaionale implementate SQL
SGBD Oracle dispune de un instrument de analiz a timpilor i a algoritmilor de execuie a cererilor Explain Plan; n momentul n care se execut o cerere de regsire, n funcie de anumii factori, Oracle aplic un anumit algoritm, de regul optimizat. Explain Plan indic secvena de pai pe care optimizatorul Oracle i-a ales pentru execuia cererii SQL; Principiul de lucru are la baz costul execuiei acelei cereri aplicnd pe rnd diveri algoritmi de optimizare n funcie de statisticile obinute din dicionarul metadatelor referitoare la: operatorii relaionali, numrul de nregistrri din fiecare tabel implicat, indeci, clustere i partiii disponibile pentru acele tabele implicate n cerere; Sunt luai n calcul i ali factori precum cile de acces la date, ordinea jonciunilor, resursele fizice disponibile (CPU, memorie, operaii de I/O).
4
CREATE INDEX IDX_DESCRIERE ON T_PRODUSE (DESCRIERE); SELECT * FROM T_PRODUSE WHERE DESCRIERE = 'Toner'; nainte:
Dup:
Dup:
10
Dup:
Dup:
20
21
22
23
Dup: Se aleg algoritmii care minimizeaz costul de execuie i implic un minim de resurse; Aceti algoritmi selectai implicit de ctre Oracle pot fi alei explicit i de ctre programator cu ajutorul unor directive inserate n codul SQL; Algoritmii de optimizare utilizai n cazul jonciunilor: FULL TABLE SCANS, INDEX SCANS, NESTED LOOPS, HASH JOINS, SORT MERGE JOINS; Alegerea unui anumit tip de algoritm se face n funcie de statisticile obinute.
25
26
27
este utilizat pentru cererile n care sunt implicate tabele cu foarte multe nregistrri i asupra crora se aplic o jonciune de egalitate; algoritmul const n alegerea tabelei cu dimensiunea mai mic i construirea unei tabele hash n memorie pe baza condiiei de jonciune; apoi este scanat i cealalt tabel pentru regsirea de nregistrri care corespund condiiei de legtur; acest algoritm este aplicat n cazul n care tabela mai mic ncape n memoria intern, astfel minimizndu-se operaiile de acces pe disc; costul execuiei se rezum la timpul de parcurgere a tabelei de dimensiune mare n cutarea nregistrrilor de jonciune.
28
29
30
este recomandat pentru jonciuni n care una dintre tabele are nregistrrile deja sortate; n general, dac este realizat n prealabil o ordonare a nregistrrilor, acest algoritm duce la scderea costurilor de execuie fa de rezultatele similare obinute prin aplicarea algoritmului Hash joins; Sort merge joins este recomandat i pentru cazurile n care se realizeaz o jonciune cu o condiie de inegalitate sau pentru seturi foarte mari de date; principiul de execuie nu este ghidat de alegerea uneia dintre tabele, ci presupune:
se realizeaz o ordonare a datelor din ambele tabele dup cheia (condiia) de cutare. Dac deja a fost aplicat o sortare corespunztoare, acest pas nu se mai aplic; se realizeaz operaia de jonciune ntre cele dou tabele ordonate.
alegerea acestui algoritm este recomandat pentru seturi mari de date i necesit o ordonare anterioar a datelor.
32 33
se aplic n cazul jonciunilor de tip produs cartezian, atunci cnd ntre cele dou tabele implicate nu se poate realiza o legtur, iar rezultatul cererii const n combinaia fiecrei nregistrri din prima tabel cu fiecare nregistrare din cea de-a doua.
Sort Merge Outer Joins este aplicat cnd nu se poate alege o tabel pe post de pivot sau condiiile impuse datelor duc la o cretere a costurilor obinute prin aplicarea algoritmului Hash i cnd deja nregistrrile sunt ordonate
Hash Join Outer Joins este aplicat n principal pentru volume mari de date astfel nct metoda Hash s fie eficient i dac nu exist posibilitatea utilizrii unei tabele pe post de pivot
sunt aplicai n cazul jonciunilor externe: Nested Loop Outer Joins, Hash Join Outer Joins, Sort Merge Outer Joins.
34
SELECT /*+ USE_MERGE(c cd) */ c.id_client, c.nume_client, NVL(SUM(cd.cantitate_comand ata),0) cantitate_totala FROM t_clienti c, t_comenzi_desfacere cd WHERE c.id_client=cd.id_client(+) group by c.id_client, c.nume_client;
SELECT /*+ USE_HASH(c cd) */ c.id_client, c.nume_client, NVL(SUM(cd.cantitate_comand ata),0) cantitate_totala FROM t_clienti c, t_comenzi_desfacere cd WHERE c.id_client=cd.id_client(+) group by c.id_client, c.nume_client; 35
36
CURSUL 13...