Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań1 Systemy zarządzania bazami danych 5. Przetwarzanie zapytań.

Podobne prezentacje


Prezentacja na temat: "Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań1 Systemy zarządzania bazami danych 5. Przetwarzanie zapytań."— Zapis prezentacji:

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 x 2 a y 2. C 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 x 2 20 y 2 c y 2 30 z 2 d z 2 40 x 1 e 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 x 2 b y 2 c z 2 d x 1 e 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) = (5/10) = 0.5 B=val  T(W)= (1/10) = 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 = = 6 (ułamek zakresu) 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) = 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) =  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?)


Pobierz ppt "Oryginał: Hector Garcia-Molina5. Przetwarzanie zapytań1 Systemy zarządzania bazami danych 5. Przetwarzanie zapytań."

Podobne prezentacje


Reklamy Google