Escolar Documentos
Profissional Documentos
Cultura Documentos
2COP325
Prof. Daniel S. Kaster
Departamento de Computao
Universidade Estadual de Londrina
dskaster@uel.br
Introduo
OTIMIZADOR LGICO
Reescrita de consultas
GERADOR DE CDIGO
Algoritmos e empacotamento
EXECUTOR
Processamento de transaes
Resultado
OTIMIZADOR LGICO
Reescrita de consultas
GERADOR DE CDIGO
Algoritmos e empacotamento
EXECUTOR
Processamento de transaes
Resultado
Interpretador
SQL
Analisador Lxico
Analisador Sinttico
Analisador Semntico
rvore de consulta
Ns internos so as operaes; e
Tratamento de subconsultas
OTIMIZADOR LGICO
Reescrita de consultas
GERADOR DE CDIGO
Algoritmos e empacotamento
EXECUTOR
Processamento de transaes
Resultado
Otimizador lgico
10
Na verdade, otimizao
no termo mais adequado...
11
Avaliador de planos
Estimativas e comparao de
custos
12
13
R1) Cascateamento de
c1 AND c2 AND ... AND cn (R) c1(c2(...(cn(R))...))
R2) Comutatividade de
c1(c2(R)) c2(c1(R))
R3) Cascateamento de
list1(list2(...(listn(R))...)) list1(R)
R5) Comutatividade de e
RSSR
SS
14
S ou c(R
S) (c1(R))
S) c(R)
(ou , , )
S) L((A1,...,An,A1,...,An(R))
(c2(S))
(ou )
(B1,...,Bn,B1,...,Bn(S))
R9) Associatividade de , , e
Seja a operao: (R S) T R (S T)
S)
15
Fundamentos do algoritmo:
16
Passos do algoritmo
S) (R10)
17
18
Avaliador de planos
19
Processamento em memria
Quantidade de memria
Comunicao
Acesso a disco
20
Estatsticas no catlogo do BD
Tamanho do registro R
Nmero de blocos b
Tamanho do bloco B
N nveis do ndice x
21
Estatsticas de seletividade
22
Constante (chute)
s = 0,1 * r
s = 1 / (maior_valor - menor_valor)
Embora esta opo seja melhor que a constante, considerar distribuio
uniforme, em geral, ainda uma estimativa ruim
Exige armazenar apenas 2 valores por atributo e a manuteno
simples
23
24
OTIMIZADOR LGICO
Reescrita de consultas
GERADOR DE CDIGO
Algoritmos e empacotamento
EXECUTOR
Processamento de transaes
Resultado
25
Gerador de cdigo
26
Algoritmos
Ordenao externa
Seleo
Juno
Projeo
Operaes de conjuntos
Funes de agregao
27
Ordenao externa
ORDER BY
Junes
Eliminao de duplicados
28
buffer
COrdExt = 2 * (b + b*loggmnr),
29
Seleo
30
Algoritmos de seleo
CS1 = b/2
31
CS1 = b
CS1 = b
Prof. Daniel S. Kaster
32
CS2 = log2b
33
CS3 = x + 1
CS3 = x + s/Bfr
34
CS5 = x + s/Bfr
35
CS6 = x + 1
CS6 = x + s
36
37
CS10 = b
38
39
Op1: S1 ou S6
Op2: S1 ou S6
Op3: S1 ou S6
40
Juno
41
Algoritmos de juno
J3: Sort-merge
J4: Hash-join
42
bbuffer = 7 blocos
43
Op1: empregado
Desempenho de J1
departamento
CPF = CPFger
Desempenho de J2
Desempenho de J3
44
Projeo
Variaes
CP = b + (custo_ordenao_considerando_b' + b)
45
Operaes de conjuntos
Produto cartesiano
46
Funes de agregao
CF1 = b
F3: Group by
CF3 = custo_ordenao + b
47
Gerador de cdigo
Empacotador
Plano de execuo
48
Empacotador
49
Plano de execuo
Seqncia de operaes
Tendo uma relao base (folha) como entrada, pode-se usar seus
mtodos de acesso (ndices)
50
Open( );
GetNext( );
Close( );
51
Exemplo: TableScan_Iterator
Open( ) {
b = primeiro bloco de R;
t = primeira tupla do bloco b;
}
GetNext ( ) {
if (t == NULL) { // foi a ltima tupla do bloco b
b = prximo bloco de R;
if (b == NULL) // no h mais blocos
return NotFound;
else
t = primeira tupla de b;
}
oldt = t;
t = prxima tupla de b;
return oldt;
}
Close() {
}
52
OTIMIZADOR LGICO
Reescrita de consultas
GERADOR DE CDIGO
Algoritmos e empacotamento
EXECUTOR
Processamento de transaes
Resultado
53
Executor
54