Systemy zarz dzania bazami danych
This presentation is the property of its rightful owner.
Sponsored Links
1 / 68

Systemy zarządzania bazami danych PowerPoint PPT Presentation


  • 70 Views
  • Uploaded on
  • Presentation posted in: General

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. RABC S CDE a11010x2

Download Presentation

Systemy zarządzania bazami danych

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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ń


WynikB D

2 x

RABC S CDE

a11010x2

b12020y2

c21030z2

d23540x1

e34550y3

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...

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

.

.

5. Przetwarzanie zapytań


Algebra relacji = logiczny plan wykonania

Plan naiwny

B,D

sR.A=“c” S.E=2  R.C=S.C

X

RS

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 Cs (R)s(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

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 CC 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,...

StarsInMovieStar

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ść

    RS=SR

  • Łą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 SS T

5. Przetwarzanie zapytań


Łączność i przemienność

R S=SR

(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

sp1p2(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 ⋈

spq (R ⋈ S) =[sp (R)] ⋈sq (S)]

spqm (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?

sp1p2 (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

RA: 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) = 3V(R,C) = 5

V(R,B) = 1V(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

RV(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ń


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)

5. Przetwarzanie zapytań


A co z W = sz  val (R) ?

T(W) = ?

  • Rozwiązanie 1:

    T(W) = T(R)/2

  • Rozwiązanie 2:

    T(W) = T(R)/3

5. Przetwarzanie zapytań


Z

  • Rozwiązanie 3: Oszacuj wartości w zakresie

    Przykład R

Min=1 V(R,Z)=10

W= sz  15 (R)

Max=20

f = 20-15+1 = 6 (ułamek zakresu)

20-1+1 20

T(W) = f  T(R)

5. Przetwarzanie zapytań


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)

5. Przetwarzanie zapytań


Szacunki rozmiaru dla W = R1⋈R2

x = atrybuty R1

y = atrybuty R2

  • Przypadek 1: X  Y = 

    • Tak samo jak R1  R2

5. Przetwarzanie zapytań


Założenie (zależność inkluzyjna):

V(R1,A)  V(R2,A) Każda wartość R1.Ajest także w R2.A

V(R2,A)  V(R1,A) Każda wartość R2.Ajest także w R1.A

Przypadek 2: W = R1⋈R2 gdy XY={A}

R1 A B C R2 A D

5. Przetwarzanie zapytań


1 krotka pasuje doT(R2)krotek

V(R2,A)

więc T(W) =T(R2)  T(R1)

V(R2, A)

Szacunek T(W)gdy V(R1,A)  V(R2,A)

R1 A B C R2 A D

Weź

1 krotkę

Dopasuj

5. Przetwarzanie zapytań


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) }

5. Przetwarzanie zapytań


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

5. Przetwarzanie zapytań


Wielkość krotki wyniku (zawsze)

S(W) = S(R1) + S(R2) - S(A)

rozmiar atrybutu A

5. Przetwarzanie zapytań


Pośrednie szacunki T,S,V też potrzebne

Np. W = [sA=a(R1) ] ⋈ R2

Relacja U

T(U) = T(R1)/V(R1,A) S(U) = S(R1)

Potrzebne też V (U, *) !!

5. Przetwarzanie zapytań


A

B

C

D

cat

1

10

10

cat

1

20

20

dog

1

30

10

dog

1

40

30

bat

1

50

10

V(U,A) =1 V(U,B) =1 V(U,C) = T(R1)

V(R1,A)

V(U,D) ... gdzieś w srodku

Przykład

R1V(R1,A)=3

V(R1,B)=1

V(R1,C)=5

V(R1,D)=3

U = sA=a (R1)

5. Przetwarzanie zapytań


Przybliżeniadla U = sA=a (R)

  • Atrybut selekcji

    V(U,A) = 1

  • Klucz

    V(U,K) = T(U)

  • Inne: ?

    V(U,B)= V(R,B)

5. Przetwarzanie zapytań


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)

5. Przetwarzanie zapytań


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)=200V(R2,C)=300

    R3:T(R3) = 3000 V(R3,C)=90 V(R3,D)=500

5. Przetwarzanie zapytań


Częściowy wynik U = R ⋈ S

T(U) = 10002000 V(U,A) = 50

200 V(U,B) = 100

V(U,C) = 300

5. Przetwarzanie zapytań


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ń

5. Przetwarzanie zapytań


Podsumowanie szacowania

  • Szacowanie wielkości wyniku jest sztuką (trochę tajemną)

  • Nie zapomnieć o:

    • okresowej aktualizacji statystyk (koszty?)

5. Przetwarzanie zapytań


  • Login