Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałCzesława Uzar Został zmieniony 10 lat temu
1
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań1 Systemy zarządzania bazami danych 5. Przetwarzanie zapytań
2
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań2 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
3
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań3 RABC S CDE a11010x2 b12020y2 c21030z2 d23540x1 e34550y3 WynikB D 2 x
4
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań4 Jaki plan wykonania tego zapytania? - Oblicz produkt kartezjański - Wybierz pasujące krotki - Wykonaj rzutowanie Plan naiwny
5
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań5 RXSR.AR.BR.CS.CS.DS.E a 1 10 10 x 2 a 1 10 20 y 2. C 2 10 10 x 2. Bingo! Mamy jednego...
6
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań6 Algebra relacji = logiczny plan wykonania Plan naiwny B,D R.A =“c” S.E=2 R.C=S.C X RS Lub: B,D [ R.A=“c” S.E=2 R.C = S.C (RXS)]
7
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań7 Plan sprytniejszy B,D R.A = “c” S.E = 2 R S Złączenie naturalne
8
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań8 R S A B C ( R ) ( S ) C D E a 1 10 A B C C D E 10 x 2 b 1 20c 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
9
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań9 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
10
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań10 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 AC I1I1 I2I2 =“c” czy =2? wynik: następna krotka:
11
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań11 Analiza składniowa Transformacja Zastosuj reguły Oszacuj wielkość wyniku Wygeneruj plany fizyczne Oszacuj koszty Wybierz najtańszy Wykonaj {P 1,P 2,…..} {(P 1,C 1 ),(P 2,C 2 )...} PiPi wynik zapytanie SQL drzewo składni logiczny plan zapytania poprawiony l.p.z. l.p.z. + szacunki statystyki Schemat optymalizatora
12
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań12 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)
13
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań13 Drzewo składni SELECT FROM WHERE IN title StarsIn ( ) starName SELECT FROM WHERE LIKE name MovieStar birthDate ‘%1960’
14
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań14 Otrzymane wyrażenie „algebry relacji” title StarsIn IN name birthdate LIKE ‘%1960’ starName MovieStar
15
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań15 Wstępny logiczny plan zapytania title starName=name StarsIn name birthdate LIKE ‘%1960’ MovieStar
16
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań16 Poprawiony logiczny plan zapytania title starName=name StarsIn name birthdate LIKE ‘%1960’ MovieStar Pytanie: Przesunąć rzutowanie do StarsIn?
17
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań17 Szacowanie wielkości wyniku Dobrze znać wielkość StarsIn MovieStar
18
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań18 Pierwszy plan fizyczny Parametry: kolejność złączania, ilość RAM, wynikowe atrybuty... Hash join Full scan Index unique scan Parametry: warunek selekcji,... StarsInMovieStar
19
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań19 Szacowanie kosztów L.P.Z P 1 P 2 … P n C 1 C 2 … C n Wybierz najniższy!
20
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań20 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
21
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań21 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
22
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań22 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 SS T
23
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań23 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 Łączność i przemienność R S=SR (R S) T= R (S T)
24
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań24 Selekcja p1 p2 (R) = p1vp2 (R) = p1 [ p2 (R)] [ p1 (R)] U [ p2 (R)]
25
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań25 Zbiory a wielozbiory R = {a,a,b,b,b,c} S = {b,b,c,c,d} R U S = ? Opcja 1 SUM R U S = {a,a,b,b,b,b,b,c,c,c,d} Opcja 2 MAX R U S = {a,a,b,b,b,c,c,d}
26
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań26 Opcja 2 (MAX) powoduje prawdziwość: p1vp2 (R) = p1 (R) U MAX p2 (R) Przykład: R={a,a,b,b,b,c} p1 spełnione przez a,b; p2 przez b,c p1vp2 (R) = {a,a,b,b,b,c} p1 (R) = {a,a,b,b,b} p2 (R) = {b,b,b,c} p1 (R) U p2 (R) = {a,a,b,b,b,c}
27
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań27 SUM też ma sens (może nawet większy?) Senators (……)Rep (……) Ile jest parlamentarzystów z Kalifornii? T1 = yr,state Senators; T2 = yr,state Reps T1 Yr State T2 Yr State 97 CA 99 CA 99 CA 99 CA 98 AZ 98 CA Jak sumować?
28
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań28 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ą)
29
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań29 Rzutowanie Niech: X = zbiór atrybutów Y = zbiór atrybutów XY = X U Y xy (R) = x [ y (R)]
30
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań30 p = warunek tylko na atrybutach R q = warunek tylko na atrybutach S m = warunek na atrybutach R i S łącznie p (R ⋈ S) =[ p (R)] ⋈ S q (R ⋈ S) = R ⋈ [ q (S)] Reguły dla i ⋈
31
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań31 p q (R ⋈ S) =[ p (R)] ⋈ q (S)] p q m (R ⋈ S) = m ([ p (R)] ⋈ [ q (S)]) pvq (R ⋈ S) = [ p (R) ⋈ S] U [R ⋈ q (S)] Reguły dla i ⋈
32
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań32 Reguły dla i x = podzbiór atrybutów R z = atrybuty w warunku P (też fragment R) x [ p ( R ) ] = { p [ x ( R ) ] } x x xz
33
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań33 x = podzbiór atrybutów R y = podzbiór atrybutów S z = przecięcie zbiorów atrybutów R i S xy (R ⋈ S) = xy { [ xz ( R ) ] ⋈ [ yz ( S ) ] } Reguły dla i ⋈
34
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań34 xy { p (R ⋈ S) } = xy { p [ xz’ (R) ⋈ yz’ (S)] } z’ = z U { atrybuty użyte w p }
35
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań35 Iloczyn kartezjański, selekcja i rzut Analogicznie, bo to szczególny przypadek złączenia naturalnego, np. p (R S) =[ p (R)] S q (R S) = R [ q (S)]
36
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań36 p (R S) = p (R) p (S) p (R S) = p (R) S = p (R) p (S) Reguły dla , ,
37
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań37 p1 p2 (R) p1 [ p2 (R)] p (R ⋈ S) [ p (R)] ⋈ S R ⋈ S S ⋈ R x [ p (R)] x { p [ xz (R)] } Które transformacje są do dobre?
38
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań38 Na zdrowy rozum: rób rzuty wcześnie R(A,B,C,D,E) x={E} P: (A=3) (B=“cat”) E { p (R)} czy E { p { ABE (R)} }
39
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań39 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
40
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań40 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
41
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań41 Szacowanie kosztu planu wykonania (1) Szacowanie rozmiaru wyniku (2) Szacowanie liczby operacji wejścia-wyjścia
42
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań42 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
43
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań43 Przykład RA: 20-bajtowy napis B: 4-bajtowy integer C: 8-bajtowa data D: 5-bajtowy napis ABCD cat110a cat120b dog130a dog140c bat150d T(R) = 5 S(R) = 37 V(R,A) = 3V(R,C) = 5 V(R,B) = 1V(R,D) = 4
44
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań44 Szacunki rozmiaru dla W = R1 R2 T(W) = S(W) = T(R1) T(R2) S(R1) + S(R2)
45
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań45 S(W) = S(R) T(W) = ? Szacunki rozmiaru dla W = A=a (R)
46
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań46 Przykład RV(R,A)=3 V(R,B)=1 V(R,C)=5 V(R,D)=4 W = z=val (R) T(W) = ABCD cat110a cat120b dog130a dog140c bat150d T(R) V(R,Z)
47
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań47 Założenie 1: równomierny rozkład W = Z=val (R) Rozkład wartości atrybutu selekcjonującego Z jest równomierny wśród V(R,Z) przyjmowanych wartości
48
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań48 Założenie 2: równomiernie w dziedzinie W = Z=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
49
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań49 Przykład R Wg 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 ABCD cat110a cat120b dog130a dog140c bat150d W = z=val (R) T(W) = T(R) DOM(R,Z)
50
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań50 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
51
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań51 Selektywność selekcji ;) SC(R,A) = średnia liczba rekordów spełniających warunek równościowy na R.A T(R) V(R,A) SC(R,A) = T(R) DOM(R,A)
52
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań52 A co z W = z val (R) ? T(W) = ? Rozwiązanie 1: T(W) = T(R)/2 Rozwiązanie 2: T(W) = T(R)/3
53
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań53 Rozwiązanie 3: Oszacuj wartości w zakresie Przykład R Z Min=1 V(R,Z)=10 W= z 15 (R) Max=20 f = 20-15+1 = 6 (ułamek zakresu) 20-1+1 20 T(W) = f T(R)
54
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań54 Szacowanie zakresu f V(R,Z) = liczba różnych wartości T(W) = = f T(R) Bardziej dokładnie histogramy wartości –Problemy z ponownym użyciem planu [f V(Z,R)] T(R) V(Z,R)
55
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań55 Szacunki rozmiaru dla W = R1 ⋈ R2 x = atrybuty R1 y = atrybuty R2 Przypadek 1: X Y = –Tak samo jak R1 R2
56
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań56 Przypadek 2: W = R1 ⋈ R2 gdy X Y={A} R1 A B C R2 A D Założenie (zależność inkluzyjna): V(R1,A) V(R2,A) Każda wartość R1.A jest także w R2.A V(R2,A) V(R1,A) Każda wartość R2.A jest także w R1.A
57
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań57 R1 A B C R2 A D Szacunek T(W) gdy V(R1,A) V(R2,A) Weź 1 krotkę Dopasuj 1 krotka pasuje do T(R2) krotek V(R2,A) więc T(W) = T(R2) T(R1) V(R2, A)
58
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań58 Wielkość złączenia V(R1,A) V(R2,A) T(W) = T(R2) T(R1) V(R2,A) V(R2,A) V(R1,A) T(W) = T(R2) T(R1) V(R1,A) T(W) = T(R2) T(R1) max{ V(R1,A), V(R2,A) }
59
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań59 Przy rownomierności w dziedzinie R1 ABC R2 A D Ta krotka pasuje do T(R2)/DOM(R2,A) krotek, więc T(W) = T(R2) T(R1) = T(R2) T(R1) DOM(R2, A) DOM(R1, A) Zakładamy że takie same
60
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań60 Wielkość krotki wyniku (zawsze) S(W) = S(R1) + S(R2) - S(A) rozmiar atrybutu A
61
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań61 Pośrednie szacunki T,S,V też potrzebne Np. W = [ A=a (R1) ] ⋈ R2 Relacja U T(U) = T(R1)/V(R1,A) S(U) = S(R1) Potrzebne też V (U, *) !!
62
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań62 Przykład R1V(R1,A)=3 V(R1,B)=1 V(R1,C)=5 V(R1,D)=3 U = A=a (R1) ABCD cat110 cat120 dog13010 dog14030 bat15010 V(U,A) =1 V(U,B) =1 V(U,C) = T(R1) V(R1,A) V(U,D)... gdzieś w srodku
63
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań63 Przybliżenia dla U = A=a (R) Atrybut selekcji V(U,A) = 1 Klucz V(U,K) = T(U) Inne: ? V(U,B)= V(R,B)
64
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań64 Dla złączeń U = R1(A,B) ⋈ R2(A,C) Zachowywanie zbiorów wartości: V(U,A) = min { V(R1, A), V(R2, A) } V(U,B) = V(R1, B) V(U,C) = V(R2, C)
65
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań65 Z = R1(A,B) ⋈ R2(B,C) ⋈ R3(C,D) Przykładowe statystyki R1:T(R1) = 1000 V(R1,A)=50 V(R1,B)=100 R2:T(R2) = 2000 V(R2,B)=200 V(R2,C)=300 R3:T(R3) = 3000 V(R3,C)=90 V(R3,D)=500
66
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań66 T(U) = 1000 2000 V(U,A) = 50 200 V(U,B) = 100 V(U,C) = 300 Częściowy wynik U = R ⋈ S
67
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań67 Z = U ⋈ R3 T(Z) = 1000 2000 3000 V(Z,A) = 50 200 300 V(Z,B) = 100 V(Z,C) = 90 V(Z,D) = 500 ☺ Na szczęście wynik też nie zależy od kolejności złączeń
68
Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań68 Podsumowanie szacowania Szacowanie wielkości wyniku jest sztuką (trochę tajemną) Nie zapomnieć o: –okresowej aktualizacji statystyk (koszty?)
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.