basi di dati i prof.ssa rosalba giugno prof. alfredo pulvirenti algoritmo di query optimization
TRANSCRIPT
Basi di dati I
Prof.ssa Rosalba GiugnoProf. Alfredo Pulvirenti
Algoritmo di Query Optimization
Giugno-Pulvirenti AA 2006-2007
Espressione Algebrica di Query
• L’Algebra Relazionale può essere utilizzata come linguaggio per interrogare una base di dati.
Giugno-Pulvirenti AA 2006-2007
Equivalenza di espressioni
• Due espressioni sono equivalenti se producono lo stesso risultato qualunque sia l'istanza attuale della base di dati
• L'equivalenza è importante in pratica perché i DBMS cercano di eseguire espressioni equivalenti a quelle date, ma meno "costose"
Giugno-Pulvirenti AA 2006-2007
Un'equivalenza importante
• Push selection (se A è attributo di R2 )
SEL A=10 (R1 JOIN R2) = R1 JOIN SEL A=10 ( R2)
• Riduce in modo significativo la dimensione del risultato intermedio (e quindi il costo dell'operazione)
Giugno-Pulvirenti AA 2006-2007
Esempio di Query
• Consideriamo l’esempio del database degli studenti costituito dalle tre tabelle Studenti, Esami, Corsi.
• Supponiamo che vogliamo trovare tutti i professori che hanno dato a Mario Rossi piu’ di 27.
ProfessoreNome=‘Mario Rossi’& Voto>27 (Studenti Esami Corsi)
Giugno-Pulvirenti AA 2006-2007
Query Optimization
• La stessa query PNome=‘Mario Rossi’& Voto>27 (Studenti Esami
Corsi)
• può essere espressa come P (Nome=‘Mario Rossi’Studenti ( Voto>27
Esami Corsi))
• Che risulta essere molto più efficiente!
Giugno-Pulvirenti AA 2006-2007
Regole per la query optimization
• Anticipare l’applicazione delle proiezioni e delle restrizioni rispetto al prodotto (e quindi alle giunzioni), in modo da ridurre la dimensione delle tabelle a cui applicare il prodotto (e le giunzioni).
• Le seguenti regole possono essere utilmente utilizzate per l’ottimizzazione di espressioni:
Giugno-Pulvirenti AA 2006-2007
Regole sulla restrizione
1. Raggruppamento di restrizionia. C(X) (C(Y)(E))=C(X)&C(Y)(E)
2. Commutativita’ di e a. C(X)(Y(E))=Y(C(X)(E)) ,se XY;
b. Y(C(X)(XY(E)))=Y(C(X)(E))se X Y.
Giugno-Pulvirenti AA 2006-2007
Restrizione e Prodotto
3. Anticipazione di rispetto a .a. C(X)(E F)= C(X)(E) F, se X attr(E).
b. C(X)&C(Y)(E F)= C(X)(E) C(Y)(F), se X attr(E), Y attr(F).
c. C(X)&C(Y)&C(Z)(E F)= C(Z)( C(X)(E) C(Y)
(F)), se X attr(E), Y attr(F), Z attr(E) , Z attr(F)
Giugno-Pulvirenti AA 2006-2007
Regole per la proiezione
4. Raggruppamento di proiezioni.a. X(Y(E))= X(E) , se XY.
5. Eliminazione di proiezioni superflue.
a. X(E)=E , se X = attr.(E).
6. Anticipazione della rispetto a .a. XY(E F)= X(E) Y(F) , se Xattr(E),
Yattr.(F).
Giugno-Pulvirenti AA 2006-2007
L’ALGORITMO
• Si applicano le seguenti tre regole (per anticipare la selezione) finché è possibile
A. Si anticipa rispetto a usando la 2.a C(X)(Y(E))=Y(C(X)(E)) ,se XY;
B. Si raggruppano le restrizioni usando la 1C(X) (C(Y)(E))=C(X)&C(Y)(E).
C. Si anticipa l’esecuzione di su usando la 3.
Giugno-Pulvirenti AA 2006-2007
Anticipazione delle proiezioni
D. Si eliminano le proiezioni superflue usando la 5 X(E)=E , se X = attr.(E). .
E. Si raggruppano le proiezioni mediante la regola 4 X(Y(E))= X(E) , se XY..
F. Si anticipa l’esecuzione delle proiezioni rispetto al prodotto usando ripetutamente la 2 [Commutativita’ di e ] (quando E è un prodotto, da destra verso sinistra) e la 6 [Anticipazione della rispetto a ].