1 / 19

Procesarea și optimizarea interogărilor

Procesarea și optimizarea interogărilor. Cuprins. procesarea , optimizarea și executarea interogărilor scrise în limbaj de nivel înalt, de către un sistem de gestiune a bazelor de date. Procesarea interogărilor. parsare și transformare. interogare. expresia în algebra relațională.

faye
Download Presentation

Procesarea și optimizarea interogărilor

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Procesarea și optimizarea interogărilor

  2. Cuprins • procesarea, • optimizarea și • executarea interogărilor scrise în limbaj de nivel înalt, de către un sistem de gestiune a bazelor de date.

  3. Procesarea interogărilor parsare și transformare interogare expresia în algebra relațională optimizare rezultatul interogării execuție plan de execuție date statistici

  4. Procesarea interogărilor • Interogările SQL sunt descompuse în blocuri care sunt transformate în limbajul algebrei relaționale și optimizate. • Un bloc conține o singură expresie SELECT-FROM-WHERE, împreună cu clauze GROUP BY și HAVING.

  5. Algoritmi pentru procesarea operației selecție • Pentru operația de selecție există un număr mare de algoritmi pentru găsirea înregistrărilor în fișier: • Căutare liniară: se parcurge tot fișierul și se verifică dacă fiecare înregistrare îndeplinește condițiile de căutare; • Căutare binară: Dacă operația de căutare are o condiție de egalitate pe un atribut după care fișierul este ordonat, atunci căutarea binară este mai eficientă decât căutarea liniară. • Căutare folosind indexul pe atributul care apare în condiția din operația de selecție.

  6. Algoritmi pentru procesarea operației de SORTARE • Sortarea este una dintre cele mai utilizate operații în procesarea interogărilor: • dacă apare clauza ORDER BY, rezultatul interogării trebuie sortat, • dacă se folosește algoritmul ”merge-sort” în operația de joncțiune de asemenea trebuie sortate înregistrările, • dacă folosim operațiile de intersecție, reuniune, eliminarea duplicatelor pentru operația de proiecție avem nevoie de sortarea înregistrărilor.

  7. Algoritmi pentru procesarea operației de SORTARE • Pentru relațiile care sunt memorate în memorie, tehnici ca ”quicksort” sunt folosite. • Pentru relații foarte mari care nu pot fi stocate în memorie se folosește ”sort- merge” extern. • Algoritmul de sortare externă folosește tehnica ”merge -sort” care începe prin a sorta subfișiere de mică dimensiune ale fișierului principal și apoi le combină creând subfișiere sortate mai mari care la rândul lor sunt combinate. • Ca și alți algoritmi, algoritmul de sortare externă necesită un spațiu tampon în memoria principală pentru sortarea sufișierelor si combinarea lor.

  8. Algoritmi pentru procesarea operației JOIN • Operația de joncțiune este mare consumatoare de timp. • Cele mai des întâlnite tipuri de joncțiuni în interogări sunt joncțiunea de egalitate și joncțiunea naturală. • Pentru implementarea operației de joncțiune (R join S) sunt folosiți diferiți algoritmi : • Nested-loop join – pentru fiecare înregistrare t din R se extrage înregistrarea s din S și se verifică dacă se îndeplinește condiția de joncțiune, dacă există. • Single nested-loop join – dacă există definit un index pe unul din atributele din condiția de joncțiune, atunci se folosesc căile de acces pentru a găsi înregistrările care se potrivesc.

  9. Algoritmi pentru procesarea operației JOIN • Sort-merge join – dacă înregistrările din cele două relații sunt sortate după valorile atributelor care apar în condiția de joncțiune, operația se poate implementa în cel mai eficient mod posibil. Ambele fișiere sunt parcurise concurentîn ordinea atributelor de joncțiune, potrivind înregistrările care au aceleași valori pentru ele. Dacă fișierele nu sunt sortate, ele pot fi sortate folosind sortarea externă. • Alegerea unuia dintre acești algorimti se face prin estimarea costului care ia în considerare informații ca: numărul de înregistrări și blocuri din relațiile implicate în joncțiune.

  10. Algoritmi pentru procesarea altor operații • Eliminarea duplicatelor poate fi implementată prin sortare. • Optimizarea poate fi făcută prin eliminarea duplicatelor în timpul sortării externe în ambii pasi (generarea subfisierelor și combinarea lor). • Pentru operația de proiecție se iau atributele corespunzătoare din fiecare tuplu, apoi urmează eliminarea duplicatelor. • Operațiile de agregare pot fi implementate asemănător celei de eliminare a duplicatelor: • Prin sortare se pun tuplurile în grupuri și apoi funcțiile de agregare sunt aplicate pe fiecare grup. • Optimizarea poate fi făcută prin gruparea tuplurilor în același grup în timpul sortării externe în ambii pași (generarea subfișierelor și combinarea lor).

  11. Combinarea operațiilor folosind ”pipelining” • O interogare specificată în SQL va fi translatată în algebra relațională care este un șir de operații relaționale. • Dacă se va executa o singură operație la un moment dat, vor trebui generate fișiere temporare pe disc pentru a stoca rezultatele temporare ale acestor operații, creându-se astfel o încarcare mare. • Generarea și încărcarea fișierelor temporare mari pe disc sunt consumatoare de timp. • Pentru a reduce numărul mare de fișiere temporare, se folosește procesarea ”pipelining” sau bazată pe fluxuri. Procesarea ”pipeline” constă în evalurea simultană a operațiilor, trecând rezultatul unei operații urmatoarei operații fără a mai stoca pe disc rezultatele temporare.

  12. Optimizarea interogărilor • Optimizarea interogării este procesul de selectare a celui mai eficient plan de execuție a interogării. • Nu se așteaptă numai ca utilizatorii să scrie interogări eficiente, ci și sistemul să construiască un plan eficient de execuție care să minimizeze costurile. • Unul dintre aspectele optimizării apare la nivelul algebrei relaționale, unde sistemul trebuie să găsească o expresie care este echivalentă cu expresia dată, dar mai eficientă la execuție. • Un alt aspect este selectarea unei strategii detaliate de procesare a interogării, cum ar fi alegerea unui algoritm pentru executarea unei operații, alegerea unor indecși, etc (Silber).

  13. Evaluareainterogărilor • Exemplu: dorim să afișăm codurile clienților care au conturi la filiale cu locația în Craiova.

  14. Evaluarea interogărilor • Există mai multe moduri de a evalua o interogare: • folosirea expresiilor echivalente • folosirea diferiților algoritmi pentru operații • Exemplu de plan de evaluare detaliat cu specificarea algoritmilor folosiți pentru fiecare operație și cum sunt coordonate aceste operații.

  15. Transformarea expresiilor relaționale • Două expresii relaționale sunt echivalente în algebra relațională dacă generează același set de tupluri, ordinea tuplurilor nefiind relevantă. • Regulile de echivalență sunt următoarele: • 1. Operația de selecție cu condiții legate prin conjunctie pot fi descompuse în selecții individuale: • 2. Operațiile de selecție sunt commutative: • 3. Numai ultima operație de proiecție dintr-un șir este necesară, celelalte pot fi omise:

  16. Transformarea expresiilor relaționale • 4. Selecțiile cu produsul cartezian (sau joncțiune) pot fi înlocuite numai cu joncțiune theta: • 5. Joncțiunile theta și naturale sunt commutative: • 6(a)Joncțiunile naturale sunt asociative: • 6(b) Joncțiunile theta sunt associative , doar dacă condiția 2implică attribute numai din E2 și E3:

  17. Transformarea expresiilor relaționale

  18. 7.Selecția poate fi distribuită peste joncțiunea theta cu următoarele condiții: 7(a) Când toate atributele din 0 implică numai atributele (E1) 7(b) Când 1 implică numai attribute din E1 și 2 implică nuami attribute din E2.

More Related