Documentos de Académico
Documentos de Profesional
Documentos de Cultura
07 Optimizacion
07 Optimizacion
Elmasri/Navathe 02
Consulta (SQL)
Introduccin
Traduccin de consultas SQL a lgebra relacional (18.1)
Optimizacin sintctica: Heurstica (18.3)
rbol de consulta
Reglas de transformacin
Algoritmo de optimizacin
Optimizacin fsica: Estimacin de coste (18.2, 18.4)
Algoritmos bsicos y clasificacin externa
Componentes del coste. Informacin del catlogo
Algoritmos y funciones de coste en seleccionar ()
Cdigo
Modo compilado
o interpretado
Procesador de BD
Tiempo de ejecucin
Resultado
A. Jaime 2005
DBD Tema 7
Optimizacin
rbol o grafo
de consulta
Generador de Cdigo
Forma intermedia
Plan de ejecucin
DBD Tema 7
Compilador
Optimizador
Optimizador
A. Jaime 2005
FROM EMPLEADO
WHERE SALARIO > ( SELECT MAX(SALARIO)
FROM EMPLEADO
Traduccin
Traduccin
lgebra
alallgebra
WHERE NUMD=5);
Traduccin
Traduccin
lgebra
alallgebra
Tcnicas de optimizacin:
Fsica o estimacin de coste:
Elegir el plan de menor coste estimado
Sintctica o reglas heursticas
Ordenar las operaciones
Utiliza un rbol o un grafo de consultas
Semntica
Generalmente se combinan las dos primeras tcnicas
bloque de
consulta 2
Consulta
anidada.
Se estudian en la
asignatura DBD
MAX SALARIO(NUMD=5(EMPLEADO))
Elegir plan de consulta
Se
Seevala
evalaslo
slouna
unavez.
vez.
El
Elresultado
resultadosesetrata
tratacomo
como
una
(>C)
unaconstante
constante(>C)
A. Jaime 2005
DBD Tema 7
A. Jaime 2005
DBD Tema 7
rbol de consulta
Optimizador:
En forma de
Generada por
rbol o de grafo el analizador
sintctico
Reglas heursticas:
modifican la representacin interna de la consulta
P.NMEROP, P.NMD,
E.APELLIDO, E.DIRECCIN,
E.FECHA_NCTO
Regla principal:
Primero ejecutar seleccionar () y proyectar ()
|| D.NSS_JEFE=E.NSS
|| P.NMD=DNMEROD
P.LOCALIZACINP=Stafford
Orden de ejecucin
A. Jaime 2005
DBD Tema 7
A. Jaime 2005
DBD Tema 7
EJEMPLO:
SELECT APELLIDO
FROM EMPLEADO, TRABAJA_EN, PROYECTO
WHERE NOMBREP=Acuario AND NMEROP=NMP
AND NSSE=NSS AND FECHA_NCTO>31-DIC-1957
APELLIDO
NOMBREP=Acuario Y NMEROP=NMP
P.NMEROP, P.NMD,
E.APELLIDO, E.DIRECCIN,
E.FECHA_NCTO
Y NSSE=NSS Y FECHA_NCTO>31-DIC-1957
D.NSS_JEFE=E.NSS Y
P.NMD=DNMEROD Y
P.LOCALIZACINP=Stafford
EMPLEADO
PROYECTO
TRABAJA_EN
DBD Tema 7
A. Jaime 2005
DBD Tema 7
APELLIDO
NOMBREP=Acuario Y NMEROP=NMP
APELLIDO
Y NSSE=NSS Y FECHA_NCTO>31-DIC-1957
NSSE=NSS NOMBREP=Acuario
PROYECTO
EMPLEADO
FECHA_NCTO>31-DIC-1957
TRABAJA_EN
APELLIDO
NMEROP=NMP
FECHA_NCTO>31-DIC-1957
| que
ms
Mejor |
APELLIDO
NSSE=NSS
NMEROP=NMP FECHA_NCTO>31-DIC-1957
TRABAJA_EN
NOMBREP=Acuario
EMPLEADO
A. Jaime 2005
DBD Tema 7
EMPLEADO
||NMEROP=NMP
NOMBREP=Acuario
PROYECTO
TRABAJA_EN
FECHA_NCTO>31-DIC-1957
EMPLEADO
TRABAJA_EN
Mejor quitar atributos
| que
ms
Mejor |
APELLIDO
||NSSE=NSS
||NMEROP=NMP
PROYECTO
FECHA_NCTO>31-DIC-1957
EMPLEADO
NOMBREP=Acuario
TRABAJA_EN
APELLIDO
5
||NSSE=NSS
NSSE
NSS, APELLIDO
||NMEROP=NMP FECHA_NCTO>31-DIC-1957
NMEROP
NSSE, NMP EMPLEADO
PROYECTO
TRABAJA_EN
A. Jaime 2005
||NSSE=NSS
PROYECTO
NOMBREP=Acuario
10
APELLIDO
NMEROP=NMP FECHA_NCTO>31-DIC-1957
NOMBREP=Acuario
TRABAJA_EN
EMPLEADO
PROYECTO
APELLIDO
NSSE=NSS
PROYECTO
DBD Tema 7
TRABAJA_EN
NSSE=NSS NOMBREP=Acuario
PROYECTO
EMPLEADO
A. Jaime 2005
NMEROP=NMP
11
A. Jaime 2005
DBD Tema 7
Ejemplo:
subrbol de raz
NSSE
12
Reglas de transformacin
C slo atributos de L
L(R ||C S)
A1,...,An(R) ||C B1,...,Bm( S)
2) conmutativa:
C con atributos NO
lista1(lista2(R)) lista1(R)
4) y conmutativas:
A1,...,An(C(R))
C(A1,...,An(R))
5) || conmutativa y conmutativa:
R ||C S S ||C R
RSSR
6) y || conmutativas:
En C1 slo atributos de R,
8) e conmutativas ( no conmutativa):
(R S) (S R)
(R S) (S R)
9) ||, , e asociativas:
(R S) T R (S T)
En C slo atributos de
A1, ..., An
En C slo atributos de R
L(R ||C S)
de L, se aade L final
L( A1...An+k(R) ||C B1...Bm+p( S) )
3) Cascada de :
11) y conmutativas:
L(R S) L(R) L(S)
C(R||S) C(R)||S
C(R||S) C1(R)||C2(S)
DBD Tema 7
13
puede ser
||, ,
pero la misma en
toda la expresin
puede ser
,
pero la misma en
toda la expresin
en C2 slo atributos de S,
C = C1 AND C2
A. Jaime 2005
L=A1...An, B1...Bm
los AiR, los BiS
A. Jaime 2005
DBD Tema 7
14
1) Regla 1: cascada de
Descomponer C si C tiene ANDs en varias en cascada
Ejemplo:
NOMBREP,APELLIDO,DIRECCIN
||NMEROD=ND
NOMBRED=Investigacin
EMPLEADO
DEPARTAMENTO
A. Jaime 2005
DBD Tema 7
15
A. Jaime 2005
DBD Tema 7
16
Algoritmos bsicos
Estudiaremos:
Seleccin ()
Reunin (|X|, *)
Otras:
proyeccin ()
operaciones de conjuntos (,,,X)
Operaciones de agregacin (MIN, MAX,
CUENTA, PROMEDIO, SUMA)
Fase de fusionar:
Fusionar 2 a 2 los bloques ordenados para formar
series de 2 bloques ordenados
Fusionar 2 a 2 las series anteriores para formar
series de 4 bloques ordenados
ORDER BY
A. Jaime 2005
DBD Tema 7
17
A. Jaime 2005
=A1,A3,A5
=A2,A4
Fusin 1
Ficheros 1 y 2 vacos
Fichero 3 10 36 50 95 100 110 40 60 70 120 130 153
22 80 140
= (A1+A2), (A3+A4), (A5+)
Distribucin 2
Fichero 1 10 36 50 95 100 110 22 80 140
=B1,B3
=B2
Fichero 2 40 60 70 120 130 153
Fusin 2
Ficheros 1 y 2 vacos
Fichero 3 10 36 40 50 60 70 95 100 110 120 130 153
22 80 140
= (B1+B2), (B3+)
Distribucin 3
Fichero 1 10 36 40 50 60 70 95 100 110 120 130 153
Fichero 2 22 80 140
=C1
=C2
Fusin 3
Fichero 3 10 22 36 40 50 60 70 80 95 100 110 120
=(C1+C2)
DBD Tema 7
DBD Tema 7
18
Distribucin 1
Fichero 1 50 95 110 40 120 153 22 80 140
Fichero 2 10 36 100 60 70 130
se necesitan log2 b
etapas de fusin
A. Jaime 2005
Generalmente
coste principal:
se usa este
BD grandes: bloques transferidos
BD pequeas (entran en memoria): cmputos
BD distribuidas: comunicacin
Ordenado
19
A. Jaime 2005
DBD Tema 7
20
N de valores
distintos del
atributo A en el
fichero F
s=r/d
Selectividad de la condicin A=valor(F),
fraccin de registros de F que la cumple
s = sl * r
N de
registros
(distribuidos uniformemente)
resultado
A. Jaime 2005
DBD Tema 7
A. Jaime 2005
21
Sobre el campo
S3: ndice primario o dir. calculado,
de bsqueda
bsqueda de 1 registro, condicin de igualdad
a) ndice:
CS3a= x + 1 (x=n de niveles)
b) Direccionamiento calculado:
CS3b= 1 (aprox. para el esttico)
(*) Generalmente
A. Jaime 2005
DBD Tema 7
23
Sobre el campo
de bsqueda
S4: ndice primario o de agrupacin,
desigualdad, lectura de varios registros
Condicin con >, <, si aprox. r/2
registros satisfacen la condicin:
b/2=la mitad de los bloques
CS4= x + b/2
Puede ser muy inexacta
Tambin se puede
en casos concretos
aplicar a un intervalo: 30.000 SALARIO 35.000
Sobre el campo
S5: ndice de agrupacin,
de bsqueda
igualdad, lectura de varios registros
Condicin de igualdad:
s = cardinalidad de seleccin. N reg
CS5= x+s/fbl
de bsqueda
S6: ndice secundario (B+)
a) Condicin de igualdad con no clave:
CS6a= x + s (cada registro en un bloque distinto)
b) Condicin de igualdad con clave
CS6b= x + 1
c) Condicin con >, <, si aprox. r/2
satisfacen la condicin
r/2= mitad de los registros
CS6c= x + (bi1/2) + (r/2)
a travs del ndice
Por el campo de
bsqueda
22
DBD Tema 7
Sobre el campo
Tambin se puede
aplicar a un intervalo
A. Jaime 2005
DBD Tema 7
24
Bloque 1
Adams, John
Adams, Robin
Akers, Jan
Wright, Pam
Wyatt, Charles
Zimmer, Byron
Ejemplo de fichero con ndice primario Ejemplo de fichero con ndice de agrupacin
Clave
Campo de
primaria
agrupacin
5
9
...
Bloque 2
Aaron, Ed
Wyatt, Charles
Acosta, Marc
Aaron, Ed
Abbott, Diane
Acosta, Marc
Bloque n
Bloque 1
Bloque 2
Adams, John
Zimmer, Byron
Akers, Jan
...
Adams, Robin
Abbott, Diane
Wright, Pam
Bloque n
9
16
Algoritmos de seleccin: S1
28
Algoritmos de seleccin:
Sobre campo de ordenacin: S1, S2a, S2b
Resto de campos: S1
Ejemplo de fichero de direccionamiento calculado
Campo de dir.
calculado
...
Campo de dir.
calculado
321
761
91
182
981
nulo
...
M-1
1
1
1
3
3
7
7
9
Algoritmos de seleccin:
Sobre campo de agrupacin:
S1, S2b, S4, S5
Resto de campos: S1
Algoritmos de
seleccin:
Sobre campo de dir.
calculado: S1, S3b
Resto de campos: S1
nulo
652
8
9
15
16
24
28
Algoritmos de seleccin:
Sobre clave primaria:
S1, S2a, S3a, S4
Resto de campos: S1
...
340
460
580
2
5
nulo
399
89
630
A. Jaime 2005
DBD Tema 7
25
A. Jaime 2005
24
9
15
15
...
3
7
...
1
9
...
3
7
...
1
3
9
15
16
16
28
DBD Tema 7
slo =
S8: ndice compuesto (A1, A2)
( direccionamiento calculado compuesto)
Algoritmos de seleccin:
Sobre clave secundaria: S1, S6b, S6c
Resto de campos: S1
A. Jaime 2005
Cualquier comparacin:
=, >, <,
Algoritmos de seleccin:
Sobre clave secundaria: S1, S6a, S6c
Resto de campos: S1
8
28
24
24
5
2
26
DBD Tema 7
27
A. Jaime 2005
DBD Tema 7
28
ndices definidos:
IA(SALARIO):
IS-c(NSS):
IS-nc(ND):
IS-nc(SEXO):
xSALARIO=3, sSALARIO=20
xNSS=4, sNSS=1 (clave)
xND=2, bi1ND=4, dND=125 valores distintos sND=(rE/dND)=80
xSEXO=1, dSEXO=2 sSEXO=
(rE/dSEXO) = 5.000
S1 se calcula una vez
y se tiene en cuenta
en todas las consultas
sobre EMPLEADO
A. Jaime 2005
DBD Tema 7
29
A. Jaime 2005
R |X|A=B S
DBD Tema 7
31
R |X|A=B S
Para cada rR
Para cada sS
Si r[A]=s[B] obtener tupla con r y s
Fin
R |X|A=B S
A. Jaime 2005
30
DBD Tema 7
R |X|A=B S
Para cada rR
acceder con la estructura a S y encontrar
las tuplas con s[B]=r[A]
Para cada s encontrada obtener tupla con r y s
Fin
A. Jaime 2005
DBD Tema 7
32
R |X|A=B S
R3: Clasificacin-fusin
Ordenar ficheros desordenados (R por A, S por B)
Recorrer R y S a la vez encontrando registros
coincidentes
Una visita por registro
Si A y B no clave: modificacin del algoritmo
Tambin usando ndice secundario:
Ineficiente por cada registro acceso a 1 bloque
diferente
R |X|A=B S
R4: Con direccionamiento calculado
1) Fase de particin:
Tomar el fichero con menos registros (ej. R)
Crear un fichero de dir. calculado vaco R
Recorrer R:
Insertar sus registros en R
Campo A como clave de dir. calculado
2) Fase de prueba: (algoritmo R2 sobre R)
Recorrer S:
Aplicar funcin de dir. calculado (la misma
usada para R) al valor del campo B
Obtener las tuplas reunin donde coincidan el
valor de S[B] y R[A]
En esta versin simplificada del algoritmo se
supone que R entra en memoria
A. Jaime 2005
DBD Tema 7
33
S1
R2
S2
R1
R2
MEMORIA
R3
R4
S1, S2,
S3, S4
R3
S3
S1-R1, S1-R2
S1-R3, S1-R4
S2-R1, S2-R2
S2-R3, S2-R4
R4
S4
S3-R1, S3-R2
S3-R3, S3-R4
R5
S4-R1, S4-R2
S4-R3, S4-R4
R6
R7
R6
MEMORIA
R7
MEMORIA
MEMORIA
Bfer para
resultado
S1, S2,
S3, S4
S1-R5, S1-R6
S1-R7
S2-R5, S2-R6
S2-R7
S3-R5, S3-R6
S3-R7
S4-R5, S4-R6
S4-R7
A. Jaime 2005
DBD Tema 7
34
Bloque Fichero
3
R1 5
6
Fichero S
9
R2 12
23
Bloque
1
Bfer para fichero S
36
1
S1
35
35
6
S2
35
R3 36
41
MEMORIA
MEMORIA
DISCO
DISCO
36
Ciclo interno
Ciclo externo
N bferes
Paso 1 sobre R:
Paso 2 sobre R:
R1
S2
Paso 3 sobre R:
R2
R3
S2,
S1
nada
Ciclo interno
Ciclo externo
nada
N bferes
R.35-S35
R.36-S.36
A. Jaime 2005
DBD Tema 7
35
A. Jaime 2005
DBD Tema 7
36
rD= 50,
bD=10,
rE= 5.000,
bE=2.000
Ordenar E
Ciclo
Ordenar D
Ciclo
3
5
6
S1
1
6
9
R2 12
23
S2
35
36
R1
R2
S2
nada
Paso 3 sobre R:
R3
DBD Tema 7
37
S2
R.35-S.35
R.36-S.36
A. Jaime 2005
Bloque Fichero
3
R1 5
6
9
R2 12
23
36
1
S2
35
6
Fichero S en memoria
en fichero de dir. calculado
36
0
1
2
3
4
35
1
6
Paso 2 sobre R:
Paso 3 sobre R:
R1
R2
R3
nada
R.35-S35
R.36-S.36
A. Jaime 2005
DBD Tema 7
39
Paso 1 sobre R:
R.6-S.6
Paso inicial:
volcar fichero
ms pequeo a
un fichero de
dir. calculado
en memoria
35
R3 36
41
MEMORIA
MEMORIA
S1
38
R |X|A=B S
Bloque Fichero
DBD Tema 7
Paso 2 sobre R:
35
R3 36
41
S1
A. Jaime 2005
R1
R.6-S.6
EMPLEADO 50/5.000=0,01
DPTO 1
Paso 1 sobre R:
A. Jaime 2005
DBD Tema 7
40
R |X|A=B S
DBD Tema 7
41
A. Jaime 2005
Considerando el n de bferes, el
ciclo interior sera:
. secundario:
. agrupacin:
. primario:
Dir. calculado:
CR2a= bR + (|R|*(xB+sB))
CR2b= bR + (|R|*(xB+(sB/fblB))
CR2c= bR + (|R|*(xB+1))
CR2d= bR + (|R|*h)
R3: clasificacin-fusin
Slo si hay que
Fich. ya ordenados:CR3a= bR + bS
ordenar R
Ordenacin previa: CR3b= 2*bR*(1+log2bR) +
2*bS*(1+log2bS) +
Slo si hay que
b R + bS
ordenar S
R4: direccionamiento calculado (dispersin partida)
Fich. entra en memoria: CR4a= bR + bS
NO entra en memoria: CR4b= 3*(bR + bS)
DBD Tema 7
DEPTO:
Cardinalidad seleccin
A. Jaime 2005
EMPLEADO:
(bR*bS)/(n bferes-2)
42
R |X|A=B S
DBD Tema 7
43
No calcularemos las
dos opciones. Slo
el ms pequeo en el
ciclo exterior
No tiene por qu
haber ndice
sobre ambos
atributos
A. Jaime 2005
DBD Tema 7
44
R1
A. Jaime 2005
DBD Tema 7
DATOS
r
atrib.
s estr. x bi1
Localiz.P 200 10 IS
2.000 100 NmeroP 2.000 1
NmD
50 40
NmeroD 50 1
D
50
5
NSS_Jefe 50 1
NSS 10.000 1 IS
E 10.000 2.000
ND
50 200
Salario 500 20 IS
2 4
2 50
2 50
Optimizacin
heurstica
P.NMEROP, P.NMD,
E.APELLIDO
Alternativas
(a izdas):
|| D.NSS_JEFE=E.NSS
|| P.NMD=D.NMEROD
P.LOCALIZACINP=Stafford D
Orden
reuniones
1.
2.
3.
4.
P || D || E
D || P || E
D || E || P
E || D || P
A. Jaime 2005
DBD Tema 7
47
R2
DBD Tema 7
46
R3
A. Jaime 2005
45
tbl
R4
|X|
P.LOCALIZACINP=Stafford(P)
CS1a: bP=100
CS6a: x+s =2+10=12Mejor S6a
Resultado 10 (s) registros. Entran en 1 bloque (fblP=20)
Materializado: en TEMP1 (r=10, b=1)
Supuesto que se
Orden reuniones. Estudio de la alternativa 1:
renen todos los
registros de TEMP1
TEMP1|| P.NMD=D.NMEROD D
y que fblT1D=5
CR1: bT1+(bT1*bD)+bres.=1+(1*5)+10/5 = 8
CR3: 2*bT1*(1+log2 bT1)+2*bD* (1+log2 bD)+bT1+bD+bres=
2*1*(1+0)+2*5(1+3)+1+5+10/5=50
CR4: bT1+bD+ bres .= 1+5+10/5 = 8
Mejor R1 R4
Materializado: en TEMP2 (r=10, b=2) Supuesto que se
renen todos los
TEMP2 || D.NSS_JEFE=E.NSS E
registros de TEMP2
y que fblT1D=5
CR1: bT2+(bT2*bE)+ bres.= 2+(2*2.000)+10/5.= 4.004
CR2: bT2+(rT2*(x+1))+ bres.= 2+(10*(2+1))+10/5= 34
CR3: 2*bT2*(1+log2 bT2)+2*bE* (1+log2 bE)+bT2+bE+bres=
2*2*(1+1)+2*2.000*(1+11)+2+2.000+10/5= 50.010
CR4: bT2+bE+ bres .= 2+2.000+10/5 = 2.004
Mejor R2
Supuesto que se hace segmentado, la alternativa 1
precisa: 12+1+8+34=56 transferencias de bloque
Orden reuniones. Estudio de las alternativas 2, 3 y 4 (ejercicio)
Se elige el orden de reuniones de menor coste total
A. Jaime 2005
DBD Tema 7
48
Algoritmos para: , , , , X
Proyectar ()
Implementacin fcil si incluye una clave
Si no incluye clave precisa eliminar tuplas repetidas:
Ordenando el resultado
Tambin usando direccionamiento calculado (si ya
est no se inserta)
Operaciones de conjuntos: , , , X
Pueden ser costosas
X muy costosa: sustituir por operaciones equivalentes
, , son compatibles con la unin:
Se emplean variaciones de clasificacin-fusin
(R3)
Ordenacin de los 2 ficheros (segn mismos atributos)
Para la fusin basta una pasada
Ms fcil ordenando atributos clave nicos
Tambin usando direccionamiento calculado
(DISTINCT ...)
DBD Tema 7
49
A. Jaime 2005
DBD Tema 7
50
pasada
Para calcular la unin no hace falta ordenar ya que se
trata de conjuntos disjuntos (sin tuplas comunes)
A. Jaime 2005
DBD Tema 7
51
A. Jaime 2005
DBD Tema 7
52
Optimizacin semntica
Ejemplo:
SELECT
FROM
WHERE
A. Jaime 2005
53
E.APELLIDO
EMPLEADO AS E INNER JOIN
EMPLEADO AS S
ON E.NSS_SUPERV = S.NSS
E.SALARIO > S.SALARIO
A. Jaime 2005
DBD Tema 7
54
Frmulas
de
estimacin
de coste
A. Jaime 2005
DBD Tema 7
55
S1: Lineal
a. Todos:
b. Uno:
CS1a=b
CS1b=b/2
S2: Binaria
a. (=) clave:
CS2a=log2 b
b. (=) no clave: CS2b=log2 b + s/fbl - 1
S3: 1 registro
a. Primario:
CS3a= x + 1
b. Dir. calculado:CS3b= 1
A. Jaime 2005
DBD Tema 7
56
R3: clasificacin-fusin
a. Ya ordenados: CR3a= bR+ bS
b. Sin ordenar: CR3b= 2*bR*(1+log2bR) +
2*bS*(1+log2bS) +
bR+ bS
A. Jaime 2005
DBD Tema 7
Ejercicios
57
A. Jaime 2005
58
DBD Tema 7
EMPLEADO:
a)
DEPTO:
b)
SELECT NOMBRED, APELLIDO, NOMBRE, NOMBREP
FROM DEPARTAMENTO, EMPLEADO, TRABAJA_EN,
PROYECTO
WHERE NMEROD=ND AND NSS=NSSE AND
NP=NMEROP
c)
A. Jaime 2005
A. Jaime 2005
DBD Tema 7
59
DBD Tema 7
60
A. Jaime 2005
DBD Tema 7
61
A. Jaime 2005
Art_Ingr NomArt
NomIngr
DBD Tema 7
62
Artculo.NomArt
Art_Ingr.NomArt= Artculo.NomArt
X
Ingrediente.NomIngr=Art_Ingr.NomIngr NomArt=PizzaMarinera
Precio>1000
Artculo
Art_Ingr
Ingrediente
A. Jaime 2005
DBD Tema 7
63
A. Jaime 2005
DBD Tema 7
64
A. Jaime 2005
DBD Tema 7
65
A. Jaime 2005
DBD Tema 7
67
A. Jaime 2005
DBD Tema 7
66