Documente Academic
Documente Profesional
Documente Cultură
Procesarea interogrilor
FII 2013-2014
Cuprins
Etapele procesrii interogrilor
Expresii n algebra relaional
Operatori (revizitat)
Expresii
Echivalena expresiilor
Analiza sintactic
Parsare
Parsare
Preprocesare
Arbore de parsare
Analiza semantic
Preprocesare si rescriere n AR
Selecia reprezentrii algebrice
Plan logic
Plan fizic
Execuia interogrii
metadate
Compilarea
interogrii
Optimizarea
interogrii
Optimizarea interogrilor
interogare SQL
parsare
rspuns
arbore de
parsare
conversie
plan logic al interogrii
Genereaz/transform p.l.
p.l.mbuntit
estimarea dimensiunii
rezultatului
execut
statistici
Pi
estimeaz costuri
Genereaz/transform p.f.
Theater
Parsare/
Conversie
x
Movie
Schedule
M.Actor=Winger
M.Title=S.Title
JOIN
Movie
Generatorul
de planuri
logice
M.Title=S.Title
Schedule
x
Movie
M.Actor=Winger
Schedule
Theater
S.Title=M.Title
M.Actor=WingerGeneratorul
M.Title=S.Title de planuri
logice
Movie
Schedule Movie
Schedule
M.Actor=Winger
Generatorul de
plan fizic
Movie
Movie
Plan fizic1
INDEX
M.Actor=Winger
Schedule
Movie
Plan fizic 2
Analiza sintactic
Gramatic independent de context
Analiza semantic
Preprocesare
Verificarea relaiilor
Verificarea tipurilor
Selecia:
Proiecia:
Reuniunea:
Diferena:
Produsul cartezian: x
Redenumirea:
10
Operatorul de selecie
Realaia r
12
23 10
23 10
11
Operatorul de proiecie
Relaia r
A,C
(r)
10
20
30
40
2
12
Operatorul reuniune
Relaiile r i s
s:
B
1
2
1
3
13
Operatorul diferen
Relaiile r i s
A
r-s
B
1
1
14
Produsul cartezian
Relaiile r i s
1
2
r
10
10
20
10
a
a
b
b
rxs
B
1
1
1
1
2
2
2
2
15
10
10
20
10
10
10
20
10
a
a
b
b
a
a
b
b
Operatorul de redenumire
x (E) - returneaz expresia E sub numele X
(E )
16
Compunerea operatorilor
A=C(r
1.
2.
x s)
A
rxs
A=C(r
B
1
1
1
1
2
2
2
2
x s)
1
2
2
17
10
10
20
10
10
10
20
10
a
a
b
b
a
a
b
b
10
10
20
a
a
b
E1
E2
E1 E2
E1 x E2
18
customer_name
19
(borrower)
customer_name
(depositor)
Interogri
branch_name=Perryridge
Interogri
21
FROM
title
WHERE
<Tuple> IN <Query>
StarsIn
( <Query> )
starName
SELECT
22
FROM
WHERE
<SFW>
< where_cond >
%1960
title
starName=name
StarsIn
<where_cond>
<tuple>
<attribute>
starName
23
IN
name
MovieStar
StarsIn
name
birthdate LIKE %1960
MovieStar
Operatori adiionali
Intersecia pe mulimi
Joinul natural
Agregarea
Joinul extern
Teta-joinul
24
Intersecia pe mulimi
Relaiile r i s
A
1
2
1
r
B
2
25
2
3
Joinul natural
Relaiile r i s
1
2
4
1
2
a
a
b
a
b
1
3
1
2
3
a
a
a
b
b
r
A
1
1
1
1
2
r s
r.B = s.B
s
C
a
a
a
a
b
r.D = s.D
(r x s))
Exemplu
balance(account)
27
account.balance
d (account)))
Funcii de agregare:
avg
min
max
sum
count
28
F1 ( A1 ), F2 ( A2 ), , Fn ( An )
( E)
Exemplu
relaia r
7
7
3
10
g sum(c) (r)
sum(c )
27
Join extern
relaia loan
loan_number
branch_name
loan
L-170
L-230
loan
branch_name
Downtown
Redwood
L-170
L-230
L-155
amount
3000
4000
customer_name
Jones
Smith
L-170
L-230
L-260
30
Jones
Smith
Hayes
3000
4000
1700
loan_number
loan_number
customer_name
amount
Downtown
Redwood
Perryridge
L-170
L-230
L-260
relaia borrower
branch_name
Downtown
Redwood
Perryridge
amount
3000
4000
1700
customer_name
Jones
Smith
null
Join extern
borrower
loan_number
L-170
L-230
L-155
branch_name
Downtown
Redwood
null
amount
3000
4000
null
customer_name
Jones
Smith
Hayes
loan
borrower
loan_number
L-170
L-230
L-260
L-155
31
branch_name
Downtown
Redwood
Perryridge
null
amount
3000
4000
1700
null
customer_name
Jones
Smith
null
Hayes
Exemple interogri
(borrower)
customer_name
(depositor)
loan)
32
account ))
account))
Echivalena expresiilor
33
Reguli de echivalen
selecia pe baz de conjuncii e echivalent cu o secven de selecii
1.
(E)
( E ))
2.
( E ))
( E ))
3.
L1
L2
((
Ln
( E))))
L1
( E)
4.
a.
b.
34
(E1 X E2) = E1
E2
1(E1
2 E2) = E1
2 E2
Reguli de echivalen
5.
6.
35
2 implic
E3)
Reguli de echivalen
36
Reguli de echivalen
Distribuia seleciei asupra operatorului de teta-join
7.
a)
cnd
implic atribute doar din una dintre expresiile (E1) din join.
0
b)
cnd
1 implic
37
E1
E2) = (
0(E1))
E2) = (
E2
2
1(E1))
(E2))
Reguli de echivalen
Distribuia proieciei asupra teta-joinului
8.
a)
dac
( E1
E2 ) (
L1
L2:
( E1 ))
L2
( E2 ))
Fie joinul E1
E2
Fie L1 i L2 mulimi de atribute din E1 i respetiv E2
Fie L3 atribute din E1 care sunt implicate n condiia de join , dar nu sunt n L1 L2,
Fie L4 atribute dinE2 care sunt implicate n condiia de join , dar nu sunt n L1 L2
b)
L1 L2
38
( E1
E2 )
L1 L2
((
L1 L3
( E1 ))
L2 L4
( E2 )))
Reguli de echivalen
9.
10.
E1 E2 = E2 E1
E1 E2 = E2 E1
Reuniunea i intersecia pe mulimi sunt asociative
(E1
(E1
11.
E2)
E2)
E3 = E1
E3 = E1
(E2
(E2
E3)
E3)
i .
(E1 E2) =
(E1)
(E2)
similar pentru i n locul
(E1 E2) =
similar pentru
12.
39
(E1) E2
E2) = (
L(E1))
L(E2))
Optimizri
mpingerea seleciilor
depositor)))
Pe baza regulii 7a
customer_name (( branch_city =Brooklyn
(account
(branch))
(account
depositor))
40
Optimizri
mpingerea seleciilor
Numele clienilor cu un cont la o filial din Brooklyn care are balana peste
1000
customer_name( branch_city = Brooklyn
(branch
depositor)))
(account
(branch
account))
depositor)
41
(account)
42
Optimizri
mpingerea proieciilor
customer_name(( branch_city = Brooklyn
account)
depositor)
(branch)
(branch)
depositor )
branch_city = Brooklyn
account )
43
Optimizri
Ordonarea joinurilor
(branch))
(account depositor))
Numai un mic procent din clieni au conturi n filiale din Brooklyn deci e mai
bine s se execute mai nti
customer_name
((
branch_city = Brooklyn
(branch) account
Pentru n relaii exist (2(n 1))!/(n 1)! ordonri diferite pentru join.
branch_city = Brooklyn
Estimarea costurilor
nr
fr
45
(cazul
V(r)
este simetric)
altfel
46
(r):
nr
s1
s2
2 ...
n (r):
nr
Negaia
(r):
47
nr size( (r))
...
sn
nrn
Disjuncia
1
1 (1
s
s1
s
) (1 2 ) ... (1 n )
nr
nr
nr
S=
48
: nr *ns
nr ns
S = {A} nu e cheie pentru R sau S:
V ( A, s )
nr ns
sau
V ( A, r )
dac sunt disponibile histograme se calculeaz formulele anterioare pe fiecare celul pentru
cele dou relaii
Proiecia
A(r)
: V(A,r)
Operaii pe mulimi
r
r
r-s : nr
Join extern
s : nr + ns.
s : min(nr , ns)
r
r
1
s: dim(r
s) + nr
s = dim(r
s) + nr + ns
(r)
2 (r)
echivalent cu
2 (r)
49
50
51
Conjuncie:
53
. . . n(r)
Disjuncie:
...
n (r)
Algoritmi:
54
Pentru teta-join: r
55
c este costul parcurgerii indexului pentru a returna s tuple care se potrivesc pentru
un tuplu din r (echivalent cu selecia pe s cu condiia de join)
dac exist indeci pentru ambele relaii, care e preferat drept relaie extern?
Exemplu
56
Join cu fuziune
Algoritm
1.
2.
br + bs blocuri transferate
+ costul sortrii relaiilor
Join cu fuziune hibrid: o relaie este sortat iar a doua are un index secundar pe
57
Join hash
r1, r2,rn
s1,s2,sn
Joinuri complexe
(r
59
2 ...
2 ...
s)
(r
s)
...
(r
s)
Evaluare expresiilor
Alternative:
60
Bibliografie
61