700 likes | 834 Views
Systemy zarządzania bazami danych. 5. Przetwarzanie zapytań. Przetwarzanie zapytań. Zapytanie Plan wykonania Plan wykonania Wynik Przykład: Select B,D From R,S Where R.A = “c” S.E = 2 R.C=S.C. Wynik B D 2 x. R A B C S C D E a 1 10 10 x 2
E N D
Systemy zarządzania bazami danych 5. Przetwarzanie zapytań 5. Przetwarzanie zapytań
Przetwarzanie zapytań • Zapytanie Plan wykonania • Plan wykonania Wynik • Przykład: Select B,D From R,S Where R.A = “c” S.E = 2 R.C=S.C 5. Przetwarzanie zapytań
Wynik B D 2 x R A B C S C D E a 1 10 10 x 2 b 1 20 20 y 2 c 2 10 30 z 2 d 2 35 40 x 1 e 3 45 50 y 3 5. Przetwarzanie zapytań
Jaki plan wykonania tego zapytania? - Oblicz produkt kartezjański - Wybierz pasujące krotki - Wykonaj rzutowanie Plan naiwny 5. Przetwarzanie zapytań
Bingo! Mamy jednego... RXS R.A R.B R.C S.C S.D S.E a 1 10 10 x 2 a 1 10 20 y 2 . . C 2 10 10 x 2 . . 5. Przetwarzanie zapytań
Algebra relacji = logiczny plan wykonania Plan naiwny B,D sR.A=“c” S.E=2 R.C=S.C X R S Lub: B,D [sR.A=“c” S.E=2 R.C = S.C (RXS)] 5. Przetwarzanie zapytań
Plan sprytniejszy B,D sR.A = “c”sS.E = 2 R S Złączenie naturalne 5. Przetwarzanie zapytań
R S A B C s (R) s(S) C D E a 1 10 A B C C D E 10 x 2 b 1 20 c 2 10 10 x 2 20 y 2 c 2 10 20 y 2 30 z 2 d 2 35 30 z 2 40 x 1 e 3 45 50 y 3 5. Przetwarzanie zapytań
Plan z użyciem indeksów Wykorzystaj indeksy na R.A i S.C (1) Użyj indeksu na R.A żeby wybrać te krotki R, dla których R.A = “c” (2) Dla każdej znalezionej wartości R.C użyj indeksu na S.C by znaleźć pasujące krotki (3) Odrzuć te krotki S, w których S.E 2 (4) Sklej pasujące krotki z R i S (5) Zrzutuj pasujące pary na atrybuty BD i wypisz je jako wynik 5. Przetwarzanie zapytań
=“c” <c,2,10> <10,x,2> czy =2? wynik: <2,x> następna krotka: <c,7,15> R S A B C C D E a 1 10 10 x 2 b 1 20 20 y 2 c 2 10 30 z 2 d 2 35 40 x 1 e 3 45 50 y 3 A C I1 I2 5. Przetwarzanie zapytań
Schemat optymalizatora zapytanie SQL Analiza składniowa drzewo składni Transformacja wynik logiczny plan zapytania Wykonaj Zastosuj reguły statystyki Pi poprawiony l.p.z. Wybierz najtańszy Oszacuj wielkość wyniku {(P1,C1),(P2,C2)...} l.p.z. + szacunki Oszacuj koszty Wygeneruj plany fizyczne {P1,P2,…..} 5. Przetwarzanie zapytań
Przykładowe zapytanie SQL SELECT title FROM StarsIn WHERE starName IN ( SELECT name FROM MovieStar WHERE birthdate LIKE ‘%1960’ ); (Znajdź filmy, w których grały gwiazdy urodzone w 1960) 5. Przetwarzanie zapytań
Drzewo składni <Zapytanie> <SFW> SELECT <SelLista> FROM <FromLista> WHERE <Warunek> <Atrybut> <NazwaRelacji> <Krotka> IN<Zapytanie> title StarsIn <Atrybut> (< Zapytanie>) starName <SFW> SELECT <SelLista> FROM <FromLista> WHERE <Warunek> <Atrybut> <NazwaRelacji> <Atrybut> LIKE <Wzorzec> name MovieStar birthDate ‘%1960’ 5. Przetwarzanie zapytań
Otrzymane wyrażenie „algebry relacji” title StarsIn <warunek> <krotka> IN name <atrybut> birthdate LIKE ‘%1960’ starName MovieStar 5. Przetwarzanie zapytań
Wstępny logiczny plan zapytania title starName=name StarsIn name birthdate LIKE ‘%1960’ MovieStar 5. Przetwarzanie zapytań
Poprawiony logiczny plan zapytania title Pytanie: Przesunąć rzutowanie do StarsIn? starName=name StarsIn name birthdate LIKE ‘%1960’ MovieStar 5. Przetwarzanie zapytań
Szacowanie wielkości wyniku Dobrze znać wielkość StarsIn MovieStar P s 5. Przetwarzanie zapytań
Pierwszy plan fizyczny Parametry: kolejność złączania, ilość RAM, wynikowe atrybuty... Hash join Index unique scan Full scan Parametry: warunek selekcji,... StarsIn MovieStar 5. Przetwarzanie zapytań
Szacowanie kosztów L.P.Z P1 P2 … Pn C1 C2 … Cn Wybierz najniższy! 5. Przetwarzanie zapytań
Optymalizacje w algebrze relacji • Reguły transformacji ... • ... zachowujące semantykę • Które transformacje są dobre? • Zachowują semantykę • Dają szansę na poprawę efektywności • Nie obniżą efektywności 5. Przetwarzanie zapytań
Złączenie naturalne • Przemienność R S =S R • Łączność (R S) T= R (S T) • Podobne właściwości dla • Iloczynu kartezjańskiego • Sumy mnogościowej • Przecięcia 5. Przetwarzanie zapytań
Właściwości • Przenoszą nazwy atrybutów do wyniku, więc ich porządek nie ma znaczenia • Można je zapisywać także jako drzewa T R R S S T 5. Przetwarzanie zapytań
Łączność i przemienność R S = S R (R S) T = R (S T) R x S = S x R (R x S) x T = R x (S x T) R U S = S U R R U (S U T) = (R U S) U T 5. Przetwarzanie zapytań
Selekcja sp1p2(R) = sp1vp2(R) = sp1 [ sp2 (R)] [ sp1 (R)] U [ sp2 (R)] 5. Przetwarzanie zapytań
Zbiory a wielozbiory R = {a,a,b,b,b,c} S = {b,b,c,c,d} RUS = ? • Opcja 1SUM RUS = {a,a,b,b,b,b,b,c,c,c,d} • Opcja 2MAX RUS = {a,a,b,b,b,c,c,d} 5. Przetwarzanie zapytań
Opcja 2 (MAX) powoduje prawdziwość:sp1vp2 (R) = sp1(R) UMAXsp2(R) Przykład: R={a,a,b,b,b,c} p1 spełnione przez a,b; p2przez b,c sp1vp2 (R) = {a,a,b,b,b,c}sp1(R) = {a,a,b,b,b}sp2(R) = {b,b,b,c}sp1(R) U sp2 (R) = {a,a,b,b,b,c} 5. Przetwarzanie zapytań
SUM też ma sens (może nawet większy?) Senators (……) Rep (……) Ile jest parlamentarzystów z Kalifornii? T1 = pyr,state Senators; T2 = pyr,state Reps T1 Yr State T2 Yr State 97 CA 99 CA 99 CA 99 CA 98 AZ 98 CA Jak sumować? 5. Przetwarzanie zapytań
Trzeba podjąć decyzję -> Używamy opcji SUM do sumowania wielozbiorów -> Niektórych reguł nie da się zastosować dla wielozbiorów (np. dla selekcji alternatywą) 5. Przetwarzanie zapytań
Rzutowanie Niech: X = zbiór atrybutów Y = zbiór atrybutów XY = X U Y pxy (R) = px [py (R)] 5. Przetwarzanie zapytań
Reguły dlas i ⋈ p = warunek tylko na atrybutach R q = warunek tylko na atrybutach S m = warunek na atrybutach R i S łącznie sp (R ⋈ S) =[sp (R)] ⋈ S sq (R ⋈ S) = R ⋈ [sq (S)] 5. Przetwarzanie zapytań
Reguły dlas i ⋈ spq (R ⋈ S) =[sp (R)] ⋈sq (S)] spqm (R ⋈ S) = sm([sp (R)] ⋈ [sq (S)]) spvq (R ⋈ S) = [sp(R)⋈ S] U [R ⋈sq(S)] 5. Przetwarzanie zapytań
pxz px Reguły dla pis x = podzbiór atrybutów R z = atrybuty w warunku P (też fragment R) px[sp (R) ] = {sp [ px (R) ]} 5. Przetwarzanie zapytań
Reguły dla pi⋈ x = podzbiór atrybutów R y = podzbiór atrybutów S z = przecięcie zbiorów atrybutów R i S pxy (R ⋈ S)= pxy{[pxz (R) ]⋈[pyz (S) ]} 5. Przetwarzanie zapytań
pxy {sp[pxz’ (R) ⋈pyz’ (S)]} z’ = z U {atrybuty użyte w p} pxy {sp(R ⋈ S)} = 5. Przetwarzanie zapytań
Iloczyn kartezjański, selekcja i rzut • Analogicznie, bo to szczególny przypadek złączenia naturalnego, np. sp (R S) =[sp (R)] S sq (R S) = R [sq (S)] 5. Przetwarzanie zapytań
Reguły dlas,, - sp(R S)= sp(R) sp(S) sp(R - S)= sp(R) - S = sp(R) -sp(S) 5. Przetwarzanie zapytań
Które transformacje są do dobre? sp1p2 (R) sp1 [sp2 (R)] sp (R ⋈ S) [sp (R)] ⋈ S R ⋈ S S ⋈ R px [sp(R)] px {sp [pxz(R)]} 5. Przetwarzanie zapytań
Na zdrowy rozum: rób rzuty wcześnie R(A,B,C,D,E) x={E} P: (A=3) (B=“cat”) pE{sp(R)} czypE{sp{pABE(R)}} 5. Przetwarzanie zapytań
A co jeśli mamy indeks(y) na A i B? B = “cat” A=3 Przetnij zbiory wskaźników żeby dostać zbiór pasujących krotek 5. Przetwarzanie zapytań
Podsumowanie transformacji • Mało transformacji zawsze dobrych • Zwykle dobre: wczesna selekcja • Inne możliwości • Eliminacja wspólnych podwyrażeń • Eliminacja duplikatów lub ... • ... Eliminacja eliminacji duplikatów 5. Przetwarzanie zapytań
Szacowanie kosztu planu wykonania (1) Szacowanie rozmiaru wyniku (2) Szacowanie liczby operacji wejścia-wyjścia 5. Przetwarzanie zapytań
Szacowanie wielkości wyniku • Statystyki dla relacji R • T(R) : liczba krotek R • S(R) : liczba bajtów w każdej krotce R • B(R): liczba bloków zajmowanych przez R • V(R, A) : liczba różnych wartości atrybutu A 5. Przetwarzanie zapytań
A B C D cat 1 10 a Przykład R A: 20-bajtowy napis B: 4-bajtowy integer C: 8-bajtowa data D: 5-bajtowy napis cat 1 20 b dog 1 30 a dog 1 40 c bat 1 50 d T(R) = 5 S(R) = 37 V(R,A) = 3 V(R,C) = 5 V(R,B) = 1 V(R,D) = 4 5. Przetwarzanie zapytań
Szacunki rozmiaru dla W = R1 R2 T(R1) T(R2) S(R1) + S(R2) T(W) = S(W) = 5. Przetwarzanie zapytań
Szacunki rozmiaru dla W = sA=a(R) S(W) = S(R) T(W) = ? 5. Przetwarzanie zapytań
T(R) V(R,Z) A B C D cat 1 10 a Przykład R V(R,A)=3 V(R,B)=1 V(R,C)=5 V(R,D)=4 W = sz=val(R) T(W) = cat 1 20 b dog 1 30 a dog 1 40 c bat 1 50 d 5. Przetwarzanie zapytań
Założenie 1: równomierny rozkład W = sZ=val(R) • Rozkład wartości atrybutu selekcjonującego Z jest równomierny wśród V(R,Z) przyjmowanych wartości 5. Przetwarzanie zapytań
Założenie 2: równomiernie w dziedzinie W = sZ=val(R) • Rozkład wartości atrybutu selekcjonującego Z jest równomierny wśród DOM(R,Z) wartości z dziedziny atrybutu Z 5. Przetwarzanie zapytań
Przykład RWg założenia 2: V(R,A)=3 DOM(R,A)=10 V(R,B)=1 DOM(R,B)=10 V(R,C)=5 DOM(R,C)=10 V(R,D)=4 DOM(R,D)=10 A B C D cat 1 10 a cat 1 20 b dog 1 30 a dog 1 40 c bat 1 50 d T(R) DOM(R,Z) W = sz=val(R) T(W) = 5. Przetwarzanie zapytań
C=val T(W) = (1/10)1 + (1/10)1 + ... = (5/10) = 0.5 B=val T(W)= (1/10)5 + 0 + 0 = 0.5 A=val T(W)= (1/10)2 + (1/10)2 + (1/10)1 = 0.5 5. Przetwarzanie zapytań