1 Fazy przetwarzania zapytanie SQL 2 Optymalizacja zapytań część I dekompozycja optymalizacja generacja kodu wyraŝenie algebry relacji plan wykonania kod katalog systemowy statystyki bazy danych wykonanie baza danych wynik Klasyfikacja technik optymalizacji zapytań 3 Proces optymalizacji zapytań 4 Moment przeprowadzenia optymalizacji statyczna optymalizacja zapytań dynamiczna optymalizacja zapytań Liczba optymalizowanych zapytań optymalizacja pojedynczego jednoczesna optymalizacja zbioru zapytań Transformacja do postaci drzewa wyraŝenia logicznego identyfikacja bloków Faza przepisywania zastosowanie transformacji algebraicznych w celu uzyskania tańszego planu wykonania Optymalizacja bloku zdefiniowanie porządku wykonywania połączeń Zakończenie optymalizacji wybór uszeregowania
Dekompozycja 5 Analiza 6 Dekompozycja : celem procesu dekompozycji jest transformacja wyraŝonego w języku wysokiego poziomu na wyraŝenie algebry relacji i weryfikacja syntaktycznej i semantycznej poprawności Etapy procesu dekompozycji analiza normalizacja analiza semantyczna upraszczanie restrukturyzacja Analiza syntaktyczna poprawności Weryfikacja poprawności atrybutów i relacji Transformacja do postaci reprezentacji wewnętrznej, bardziej adekwatnej do procesu dalszego przetwarzania E.position = manager Employees E E.deptId = D.deptId SELECT * FROM Employees E JOIN Departments D ON (E.deptId = D.deptId) WHERE E.position = 'manager' AND D.location = 'London'; D.location = 'London' Departments D zapytanie SQL drzewo algebry relacji Normalizacja 7 Analiza semantyczna (1) 8 Celem tego etapu jest przekształcenie wewnętrznej reprezentacji do znormalizowanej postaci koniunkcyjnej lub dysjunkcyjnej koniunkcyjna postać normalna (position = 'manager' OR salary > 1) AND deptid =1 dysjunkcyjna postać normalna (position = 'manager' AND salary > 1) OR deptid =1 Celem analizy jest odrzucenie niepoprawnie sformułowanych lub sprzecznych zapytań zapytanie jest niepoprawnie sformułowane jeŝeli jego elementy składowe nie prowadzą do generacji wyniku zapytanie jest sprzeczne jeŝeli jego predykaty nie mogą być spełnione przez Ŝadną krotkę (position = 'manager' AND position = 'asistant') OR salary > 1 salary > 1
Analiza semantyczna (2) 9 Analiza semantyczna (3) 1 Algorytmy oceny poprawności semantycznej zapytań istnieją tylko dla pewnej klasy zapytań nie zawierających dysjunkcji i negacji Rozwiązanie problemu zapytań niepoprawnie sformułowanych: skonstruuj graf połączenia relacji w którym wierzchołki odpowiadają relacjom, łuki odpowiadają operacjom połączenia jeŝeli graf nie jest spójny, to zapytanie jest (najprawdopodobniej) niepoprawnie sformułowane Graf połączeń atrybutów 1. dla kaŝdej referencji do atrybutu utwórz w grafie wierzchołek atrybutu lub wierzchołek 2. utwórz łuk skierowany pomiędzy wierzchołkami reprezentującymi operację połączenia 3. utwórz łuk skierowany pomiędzy wierzchołkiem atrybutu a wierzchołkiem (warunek selekcji) Wagi łuków łuk: a b: waga c, jeŝeli łuk reprezentuje warunek nierównościowy (a b+c) łuk: a: waga c, jeŝeli łuk reprezentuje warunek nierównościowy (a c) łuki reprezentujące połączenia: waga jeŝeli graf zawiera cykl, którego suma wag jest ujemna, to zapytanie jest sprzeczne Analiza semantyczna (4) 11 Analiza semantyczna (5) 12 SELECT p.proprertyid, p.street FROM Client c, Viewing v, PropertyForRent p WHERE c.clientno = v.clientno AND c.maxrent >= 5 AND c.preftype = 'flat AND p.ownerno = 'CO93' c v p graf połączeń relacji Zapytanie jest źle sformułowane brakuje warunku połączeniowego v.propertyno = p.propertyno SELECT p.proprertyid, p.street FROM Client c, Viewing v, PropertyForRent p WHERE c.clientno = v.clientno AND v.propertyno = p.propertyno AND c.maxrent >= 5 AND c.preftype = 'flat' AND c.maxrent < 2; c.maxrent 2 c.peftype -5 flat -flat graf połączeń atrybutów c.clientno v.propertyno v.clientno p.propertyno
Upraszczanie 13 Budowa bloków 14 Celem jest identyfikacja wyraŝeń redundantnych, eliminacja wspólnych podwyraŝeń, i transformacja do równowaŝnej postaci ułatwiającej dalsze przekształcanie Początkowa optymalizacja polega na zastosowaniu znanych reguł algebry relacji: p (p) = p p (false) = false p (true) = p p ( p) = false p (p q) = p p (p) = p p false = p p true = true p ( p) = true p (p q) = p Transformacje algebraiczne Model kosztowy estymacja kosztów i rozmiarów częściowych wyników Znajdowanie najlepszego drzewa operacji połączenia podejście bottom-up podejście w stylu systemu R programowanie dynamiczne Optymalizacja - problemy 15 Operacje 16 Problem optymalizacji zapytań jest bardzo trudny Konieczność uwzględniania bardzo wielu czynników klasyczny problem optymalizacyjny optymalizacja zapytań nie została jeszcze rozwiązana MoŜliwe kierunki poprawy efektywności: nowe reguły algebraicznej transformacji zapytań nowe metody znajdowanie kolejności wykonywania operacji połączenia nowe metody szacowania kosztów i rozmiarów wyników pośrednich Operacja skanowania skanowanie indeksu skanowanie relacji Selekcja Projekcja Połączenie nested loop sort-merge hash-join Grupowanie i agregacja operacje unarne staramy się przesunąć w dół drzewa operacje binarne staramy się przesunąć w kierunku korzenia drzewa
Prawa algebry relacji (1) 17 Prawa algebry relacji (2) Reguły dotyczące operacji selekcji: 18 reguły przemienności i łączności operacji R U S = S U R, R U (S U T) = (R U S) U T R S = S R, R (S T) = (R S) T R >< S = S >< R, R >< (S >< T) = (R >< S) >< T reguły dystrybutywności R >< (S U T) = (R >< S) U (R >< T) kaskada selekcji C AND C (R) = C ( C (R)) = C (R) C (R) C OR C (R) = C (R) U C (R) C (R >< S) = C (R) >< S jeŝeli C zawiera tylko atrybuty relacji R C (R >< S) = C (R) >< C (S) C (R S) = C (R) S C (R U S) = C (R) U C (S) C (R S) = C (R) S Prawa algebry relacji (3) 19 Prawa algebry relacji (4) 2 Komutatywność selekcji i projekcji π M ( C (R)) = C (π M (R)) reguły dotyczące projekcji π M (R >< S) = π N (π P (R) >< π Q (S)), gdzie N,P,Q M π M (π N (R)) = π M (R), gdzie M N Przykład: R(A,B,C,D) S(E,F,G) C=3 (R S) =? (R)? S = A=5 AND G=9 (R S) =? (R)??? (S) Przykład: R(A,B,C,D) S(E, F, G) π A,B,G (R S) = π? (π? (R) π? (S))
pod SELECT Emp.Name FROM Emp WHERE Emp.Age < 3 AND Emp.Dept# IN ( SELECT Dept.Dept# FROM Dept WHERE Dept.Loc = 'Seattle' AND Emp.Emp# = Dept.Mgr ) 21 zagnieŝdŝone SELECT DISTINCT p.name, p.maker FROM Products p AND p.price >= ALL ( SELECT q.price FROM Products q WHERE p.maker = q.maker AND q.color = 'blue' ) SELECT p.name, p.maker FROM Products p MINUS SELECT p.name, p.maker FROM Products p JOIN Products q ON ( p.maker = q.maker ) AND q.color = 'blue' AND p.price < q.price 22 SELECT Emp.Name FROM Emp JOIN Dept ON (Emp.Dept# = Dept.Dept#) WHERE Emp.Age < 3 AND Dept.Loc = 'Seattle' AND Emp.Emp# = Dept.Mgr SELECT DISTINCT p.name, p.maker FROM Products p AND p.price < ANY SELECT DISTINCT p.name, p.maker ( SELECT q.price FROM Products p JOIN Products q FROM Products q ON ( p.maker = q.maker ) WHERE p.maker = q.maker AND q.color = 'blue' ) AND q.color = 'blue' AND p.price < q.price agregacja i połączenie 23 wstawienie operacji 24 Schemat: produkty(produkt_id, nazwa, cena) sprzedaz(sprzedaz_id, data, produkt_id, ilość, data) Drzewo : GROUP BY(nazwa) (data Q2,2) (nazwa,'keczup') GROUP BY(produkt_id) (data Q2,2) (nazwa,'keczup') Schemat: produkty(produkt_id, kategoria_id, nazwa, cena) sprzedaz(sprzedaz_id, data, produkt_id, ilość, data) Drzewo : GROUP BY(kategoria_id) (data Q2,2) (nazwa,'keczup') GROUP BY(kategoria_id) GROUP BY(produkt_id) (data Q2,2) (nazwa,'keczup')
przesuwanie predykatów (1) 25 przesuwanie predykatów (2) 26 Schemat nauczyciele(n_id, nazwisko, stanowisko, wiek) wykłady(w_id, n_id, dzień, przedmiot) wykłady w_id=1 nazwisko n_id=n_id stanowisko = adiunkt nauczyciele w_id=1 wykłady nazwisko n_id=n_id stanowisko = adiunkt wykładowcy Przesuwamy predykaty selekcji w kierunku liści drzewa mniej krotek weźmie udział w operacji połączenia. Wada? Dla kaŝdego wykładu znajdź wiek najstarszego wykładowcy SELECT przedmiot, MAX(wiek) FROM wyklady w JOIN nauczyciele n ON (w.n_id = n.n_id) GROUP BY przedmiot HAVING MAX(wiek) > 4 SELECT przedmiot, MAX(wiek) FROM wyklady w JOIN nauczyciele n ON (w.n_id = n.n_id) WHERE n.wiek > 4 GROUP BY przedmiot Zaleta: minimalizacja wyniku wykonania operacji połączenia Wada: wymaga zastosowania reguł specyficznych dla operatorów grupowania i agregacji podsumowanie 27 Redukcja rozmiarów relacji 28 MoŜna opracować bardzo wiele poprawnych semantycznie reguł przepisywania zapytań Celem reguł jest minimalizacja kosztu wykonania czy kaŝda reguła minimalizuje koszt? szczególnie waŝne dla duŝych złoŝonych zapytań Problem wyboru reguł transformacji musi być uzupełnione o moduł szacowania kosztu wykonania planu danego Nie zawsze jest moŝliwe przetransformowanie zapytań w taki sposób, aby nie zawierało podzapytań (szczególnie dla podzapytań skorelowanych) MoŜliwość uŝycia sekwencji operacji półpołączenia w celu redukcji rozmiarów relacji uczestniczących w podzapytaniu szczególnie przydatna w optymalizacji zapytań rozproszonych