Plan wykładu Bazy danych Wykład 12: Optymalizacja zapyta Etapy przetwarzanie zapytania Implementacja wyrae algebry relacji Reguły heurystyczne optymalizacji zapyta Kosztowa optymalizacja zapyta Małgorzata Krtowska Katedra Oprogramowania e-mail: mmac@ii.pb.bialystok.pl Bazy danych (studia dzienne) 2 Przetwarzanie zapyta Etapy przetwarzania zapytania Zapytanie wyraone w wysokopoziomowym jzyku zapyta, takim jak SQL, musi najpierw zosta odczytane, poddane analizie składniowej i zweryfikowane. Czytnik (ang. Scanner) - identyfikuje elementy jzyka (słowa kluczowe SQL, nazwy atrybutów, nazwy relacji ) w tekcie zapytania Analizator składniowy (ang. Parser) - sprawdza składni zapytania w celu okrelenia czy sformułowano je zgodnie z regułami gramatyki jzyka zapyta. Drzewo zapytania - wewntrzna reprezentacja zapytania, w postaci drzewiastej struktury Strategia wykonania zapytania - okrelana jest przez SZBD i okrela strategi pobrania wyników zapytania z plików bazy danych. Proces wyboru najlepszej strategii okrela si mianem optymalizacji zapytania. Zapytanie w jzyku wysokiego poziomu ODCZYT, ANALIZA SKŁADNIOWA I WERYFIKACJA Zapytanie w postaci poredniej OPTYMALIZATOR ZAPYTA Plan wykonania GENERATOR KODU ZAPYTA Kod wykonania zapytania WYKONAWCZY PROCESOR BAZY DANYCH Wynik zapytania Bazy danych (studia dzienne) 3 Bazy danych (studia dzienne) 4
Strategie optymalizacji zapyta Reguły heurystyczne - sprawdzaj si z wikszoci sytuacji, ale nie gwarantuj poprawnego działania w kadym przypadku Reguły z systematycznym szacowaniem - szacowany jest koszt róznych strategii wykonania zapytania. Wybierany jest plan o najniszym szacowanym koszcie. Translacja zapyta jzyka SQL do postaci wyrae algebry relacji Zapytanie jzyka SQL jest tłumaczone na równowane mu wyraenie algebry relacji - reprezentowane jako struktura danych drzewa zapytania - które podlega optymalizacji. Zapytanai SQl s rozkładane na bloki zapytania, które stanowi podstawow jednostke, jaka moe by tłumaczona na operatory algebraiczne i optymalizowana Blok zapytania stanowi pojedyncze wyraenie SELECT- FROM- WHERE, jak równie klauzule GROUP BY I HAVING. Wyraenia algebry relacji: operacje teoriomnogosciowe (suma, przecicie, róznica) rzutowanie (projekcja) Π selekcja σ złczenie agregacja (zastosowanie funkcji agregujcych) I Bazy danych (studia dzienne) 5 Bazy danych (studia dzienne) 6 Przykład Algorytmy sortowania zewntrznego Select ename, no from where sal > (select ma(sal) from where deptno=5) Blok wewntrzny ma posta: select ma(sal) from where deptno=5 Zapis w postaci wyraenia algebry relacji: I ma sal (σ deptno=5 ()) Blok zewntrzny ma posta: Select ename, no from where sal > C Zapis w postaci wyraenia algebry relacji:, no (σ sal>c ()) Bazy danych (studia dzienne) 7 Jedne z najwaniejszych algorytmów uywanych w czasie przetwarzania zapyta, wykorzystywany wówczas gdy zapytanie zawiera klauzul order by opcj distinct w klauzuli select przy złczaniu tabel sortowanie mona unikn, jeeli istnieje odpowiedni indeks, umoliwiajcy uzyskanie uporzdkowanego dostpu do rekordów Sortowanie zewntrzne odnosi si do algorytmów sortowania odpowiednich dla duych plików rekordów składowanych na dysku, które nie mieszcz si w pamici głównej Bazy danych (studia dzienne) 8
Algorytmy sortowania zewntrznego Implementacja operacji SELECT Typowy algorytm sortowanie zewntrznego wykorzystuje strategi sortujcoscalajc: Faza sortowania: jednostki pliku, które mieszcz si w dostpnej przestrzeni bufora, s wczytywane do pamici, sortowane przy uyciu algorytmu sortowania wewntrznego i zapisywane z powrotem na dysku jako tymczasowe posortowane podpliki. Liczba jednostek pocztkowych n r zaley od liczby bloków pliku (b) oraz dostpnej przestrzeni bufora n B : n R =ceil (b/n B ). Faza scalania: posortowane jednostki s scalane w czasie jednego lub wikszej liczby przebiegów. Stopie scalenia d M jest liczb jednostek, które mona scali w kadym przebiegu. W kadym przebiegu potrzebny jest jest jeden blok bufora w celu przechowywania jednego bloku z kadej ze scalanych jednostek i jeden blok do przechowywania kadego bloku wyniku scalenia. d M jest mniejsz sposród wartoci (n B -1) i n R ; liczba przebiegów wynosi ceil(log dm (n R )). Liczba operacji dostpu do bloków: (2*b)+(2*(b*log dm n R )) Metody wyszukiwania w przypadku prostych operacji wybierania σ deptno=5 () ; σ no>3 () algorytmy te mona podzieli na tzw. przegldy plików (przegldaj rekordy w pliku w celu wyszukania i pobrania odpowiednich rekordów) oraz przegldy indeksu (wyszukiwania uwzgldniajce uycie indeksu). wyszukiwanie liniowe- pobieramy kady rekord z pliku i sprawdzamy, czy warto jego atrybutu spełnia warunek wyboru wyszukiwanie binarne - warunek wyboru zawiera porównanie równowartociowe na atrybucie klucza, wzgldem którego uporzdkowany jest plik uycie indeksu głównego (lub klucza haszujcego) jeei warunek zawiera porównanie równowartociowe na atrybucie klucza z indeksem głównym warunek ten powoduje wybranie najwyej jednego rekordu Bazy danych (studia dzienne) 9 Bazy danych (studia dzienne) 10 Implementacja operacji SELECT Implementacja operacji SELECT uycie indeksu głównego w celu pobrania wielu rekordów warunek porównania jest >,>=,< lub <= na polu klucza z indeksem gównym uywamy indeksu w celu znalezienia rekord spełniajcego odpowiedni warunek, a nastpnie pobieramy wszystkie kolejne rekordy z uporzdkowanego pliku uycie indeksu drugorzdnego (B + -drzewa) na porównaniu równociowym - metoda moe by uyta w celu pobrania pojedynczego rekordu, jeeli pole indeksujce jest kluczem lub w celu pobrania wielu rekordów, jeeli pole indeksujce nie jest kluczem. Mona jej uywa w przypadku porówna uwzgldniajcych relacje >; >=;<; <=. Bazy danych (studia dzienne) 11 Metody wyszukiwania w przypadku złoonych operacji wyboru σ deptno=5 and ename= C% () Wybór koniunktywny przy uyciu pojedynczego indeksu - jeeli atrybut zwizany z dowolnym pojedynczym warunkiem prostym jest kluczem,moemy uy jednej z metod dla prostych operacji wybierania, a nastpnie sprawdzamy, czy kady pobrany rekord spełnia pozostałe warunki proste. Wybór koniunktywny przy uyciu indeksu złoonego - jeeli warunki równoci dotycz dwóch lub wicej atrybutów i na połczonych polach istnieje indeks złoony moemy bezporednio uy takiego indeksu Wybór koniunktywny poprzez przecicie zbiorów wskaników na rekordy jeeli na wicej ni jednym polu zwizanym z warunkami prostymi istniej indeksy drugorzdne oraz jeeli indeksy zawieraj wskaniki na rekody wówczas kady indeks moe zosta uyty w celu pobrania zbioru wskaników rekordów, które spełniaj pojedyncze warunki. Przecicie tych zbiorów daje w wyniku wskaniki rekordów spełniajce warunek koniunktywny. Jeeli tylko niektóre warunki posiadaj odpowiednie indeksy, wówczas kady pobrany rekord jest dodatkowo sprawdzany w celu okrelenia czy spełnia pozostałe warunki. Bazy danych (studia dzienne) 12
Implementacja operacji SELECT σ deptno=5 or ename= C% () alternatywy logicznej stanowi sum teoriomnogociow rekordów spełniajacych poszczególne warunki std niewielkie pole manewru w zakresie optymalizacji jeeli który z warunków nie posiada indeksu naley wykorzysta wyszukiwanie liniowe tylko wówczas gdy indeks istnieje na kadym warunku mona zoptymalizowa wybór, pobiarajc rekordy spełniajce kady z warunków a nastpnie zastosowa operacj sumy teoriomnogociowej w celu wyeliminowania duplikatów Bazy danych (studia dzienne) 13 Implementacja operacji NATURAL JOIN R A=B S np. depno=deptno dept Złczenie ptli zagniedonych - dla kadego rekordu t w pliku R (ptla zewntrzna) pobieramy kady rekord s z pliku S (ptla wewntrzna) i sprawdzamy, czy oba rekordy spełniaj warunek złczenia Złczenie z ptl pojedyncz - jeeli na jednym z atrybutów podlegajacych złczeniu - np. B w pliku S - istnieje indeks pobieramy kady rekord t z pliku R, po jednym naraz, a nastpnie uywamy struktury dostpowej w celu bezporedniego pobrania wszystkich pasujcych rekordów s z pliku S, spełniajacych warunek złczenia. Złczenie sortujco - scalajce jeeli rekordy plików R i S s uporzdkowane według wartoci atrbutów złczenia -> implementacja złczenia najwydajniejsza; oba pliki s przegladane w kolejnoci atrybutów złczenia i dopasowujemy rekordy majce odpowiednio takie same wartoci atrybutów złczenia jeeli rekordy nie s posortowane mona tego dokona przy uyciu sortowania zewntrznego. Bazy danych (studia dzienne) 14 Algorytmy operacji rzutowania Π <lista atrybutów> (R) Prosty do implementacji,jeeli lista atrybutów zawiera klucz relacji R -> wynik operacji ma t sam liczb krotek co relacji R, ale zawiera w kadej krotce tylko wartoci atrybutów nalecych do listy. Jeeli lista atrybutów nie zawiera klucza relacji R, naley wyeliminowa duplikaty -> dokonuje si tego zwykle przez posortowanie wyniku operacji, a nastpnie usunicie duplikatów krotek, które wystpuj teraz obok siebie Algorytmy operacji teoriomnogociowych iloczyn kartezjaski - operacja kosztowna, std istotn rzecz jest jej unikanie poprzez zastpowanie jest równowanymi operacjami w czasie optymalizacji suma, przecicie, rónica technika sortujco-mieszajca - dwie relacje zostaj posortowane wzgldem tych samych atrybutów i jednokrotne przejrzenie kadej z nich wystarczy do utworzenia wyniku (np. suma - zachowanie w pliku scalonym tylko tych krotek które wystpuj w obu relacjach) Bazy danych (studia dzienne) 15 Bazy danych (studia dzienne) 16
Implementacja operacji agregujcych Implementacja złczenia zewntrznego Select ma(sal) from ; jeeli na atrybucie sal relacji istnieje indeks (rosncy), optymalizator moe zdecydowa o jego uyciu w celu uzyskania najwikszej wartoci. Najwiksza warto bdzie to ostatni wpis indeksu. Count, avg, sum mona uy indeksu, jeeli jest to indeks zagszczony tzn wystpuje w nim wpis dla kadego rekordu z pliku głównego. Indeksu niezagszczonego mona uzytylko dla operacji count distinct. Wówczas odpowiedni obliczenia wykorzystuj tylko wartoci w indeksie. Klauzula GROUP BY operator agregujcy musi by zastosowany oddzielnie dla kadej grupy krotek najpierw tabela musi by podzielona na podgrupy wzgldem atrybutu grupujcego czsto stosowane jest najpierw albo sortowanie albo haszowanie na atrybutach grupujcych. Select no, ename, dname from left join dept on deptno; złczenie zewntrzne mona okreli modyfikujc jeden z algorytmów złczeniowych, takich jak złczenie ptli zagniedonych lub złczenie z ptl pojedyncz: w przypadku operacji left join relacja wystpujca po lewej stronie musi si znale w petli zewntrznej (lub pojedynczej), poniewa kada krotka z tej relacji musi si znale w wyniku jeeli w relacji po prawej stronie nie ma odpowiednich krotek to wartoci uzuepłnia si wartociami null. Bazy danych (studia dzienne) 17 Bazy danych (studia dzienne) 18 Implementacja złczenia zewntrznego Mechanizm potokowy Rozwizanie alternatywne polega na wykonaniu kombinacji algebry relacji: 1. Okrelamy złczenie wewntrzne tabel i dept t1 Π no, ename, dname ( deptno=deptno dept) 2. Znajdujemy w tabeli pracownik krotki, które nie wystepuj w wyniku złczenia wewntrznego t2 Π no, ename () Π no, ename (t1) 3. Uzupełniamy kad krotk polem dname o wartoci null t2 t2 NULL 4. Wykonujemy operacj sumy na t1 i t2 wynik t1 t2 Zapytanie w jzyku SQL jest przekształcane na wyraenie algebry relacji, które jest sekwencj operacji relacyjnych wykonywanie po jednej operacji generuje pliki tymczasowe na dysku, co jest czasochłonne i moe by niepotrzebne, poniewa pliki te s natychmiast wykorzystywane jako dane wejciowe do kolejnej operacji w celu zredukowania liczby plików tymczasowych czsto generuje si kod zapytania, który odpowiada algorytmom łczenia operacji w zapytaniu. Jest to tzw. przetwarzanie potokowe. Bazy danych (studia dzienne) 19 Bazy danych (studia dzienne) 20
Reguły heurystyczne optymalizacji zapyta Heurystyczna technika optymalizacji wykorzystuje reguły heurystyczne w celu modyfikowania wewnetrznej reprezentacji zapytania (drzewa zapytania) w celu zwikszenia oczekiwanej wydajnoci działania Przykład Select ename from,, where p_desc= wodnik and.no=.no and.projid=.projid and hiredate> 1998-12-31 ; Pocztkowe drzewo zapyta: Analizator składniowy najpierw generuje pocztkow reprezentacj wewntrzn, która jest optymalizowana zgodnie z regułami heurystycznymi (np. stosowanie operacji selekcji i projekcji przed operacj złczenia) and.no=.no and.projid=.projid and hiredate> 1998-12-31 Otrzymujemy kocowe drzewo zapytania a nastpnie generuje si plan wykonania zapytania w celu wykonania grup operacji Bazy danych (studia dzienne) 21 Bazy danych (studia dzienne) 22 Przykład cd Przeniesienie operacji select w dół drzewa Przykład cd Zastosowanie bardziej restrykcyjnej operacji select jako pierwszej σ projid=projid σ no=no σ no=no σ projid=projid Bazy danych (studia dzienne) 23 Bazy danych (studia dzienne) 24
Przykład cd Zastpienie iloczynu kartezjaskiego i select operacj join Przykład cd Redukcja liczby atrybutów no=no no=no Π no Π no projid=projid Π projid projid=projid Π projid, no Bazy danych (studia dzienne) 25 Bazy danych (studia dzienne) 26 Wykorzystanie oszacowa kosztu w optymalizacji zapyta Optymalizator zapyta nie powinien polega wyłcznie na regułach heurystycznych, ale równie uwzgldna oszacowania i porównywa koszty wykonania zapytania przy uyciu rónych strategii wykonania, wybierajc strategi o najniszym oszacowanym koszcie. Takie podejcie okrela si mianem kosztowej optymalizacji zapyta i wykorzystuje ono tradycyjne techniki optymalizacji przeszukujace przestrze rozwizania problemu w celu znalezienia rozwizania, które bdzie minimalizowa funkcj kosztu. Składowe kosztu wykonania zapyta Składowe kosztu wykonania zapyta: koszt dostpu do drugorzdnych mechanizmów składowania danych koszt wyszukania, odczytania i zapisania bloków danych przechowywanych na dysku koszt zaley od struktur dostepu utworzonych dla danego pliku: uporzdkowanie, haszowanie, indeksy koszt składowania - koszt przechowywania wszelkich plików porednich generowanych w ramach strategii wykonania zapytania Koszt obliczeniowy - koszt dokonywania oblicze w pamici na buforach danych w czasie wykonywania zapytania np. wyszukiwanie, sortowanie, scalanie rekordów, obliczenia na wartociach pól koszt zuycia pamici - koszt zaleny od liczby buforów pamici potrzebnych w czasie wykonywania zapytania koszt komunikacji - koszt zawizany z przesłaniem zapytania i jego wyników z bazy danych do wzła lub terminalu, z którego zostało przesłane danie Bazy danych (studia dzienne) 27 Bazy danych (studia dzienne) 28