Cap07 Optimizacion PDF

También podría gustarte

Está en la página 1de 17

Tema 7.

Optimizacin (*) Procesamiento y optimizacin de consultas


Procesamiento y optimizacin de consultas Proceso de una consulta
Elmasri/Navathe 02
Consulta (SQL)
Introduccin Anlisis lxico y sintctico Compilador
Traduccin de consultas SQL a lgebra relacional (18.1) Validacin
Optimizacin sintctica: Heurstica (18.3) Forma intermedia rbol o grafo
de consulta
rbol de consulta
Optimizador
Optimizador
Reglas de transformacin
Algoritmo de optimizacin Plan de ejecucin
Optimizacin fsica: Estimacin de coste (18.2, 18.4)
Algoritmos bsicos y clasificacin externa Generador de Cdigo
Componentes del coste. Informacin del catlogo Modo compilado
Cdigo o interpretado
Algoritmos y funciones de coste en seleccionar ()
Algoritmos y funciones de coste en reunin (|X|, *) Procesador de BD Tiempo de ejecucin
Orden de ejecucin de las reuniones Si hay error de ejecucin
Resultado presenta el mensaje
Ejemplos de optimizacin por estimacin de coste correspondiente
Otros algoritmos: , , , , X, agregacin, reunin
externa, combinacin de operaciones por segmentacin No toma la estrategia ptima:
Una razonablemente eficiente
Optimizacin en ORACLE (18.5)
Elegir la ptima puede llevar mucho tiempo
Optimizacin semntica (18.6)
Consulta en lenguaje alto nivel (SQL): declarativa
Especifica qu se desea obtener
(*) Se han fusionado los puntos 18.2 y 18.4 para evitar No detalla tanto cmo debe obtenerse
repetir conceptos. Se puede plantear optimizacin automtica

A. Jaime 2005 DBD Tema 7 1 A. Jaime 2005 DBD Tema 7 2

Traduccin de consultas al lgebra


Optimizacin
relacional
SGBD: cuenta con varios algoritmos para operaciones Cada consulta SQL se divide en bloques de consulta:
relacionales como seleccin () y reunin ( |X| ) Unidades de traduccin al lgebra relacional
Optimizador considera los algoritmos :
Disponibles en el SGBD bloque de
consulta 1
Aplicables al diseo fsico de los ficheros que
participan en la consulta bloque de
consulta 2
SELECT APELLIDO, NOMBRE
FROM EMPLEADO
Tcnicas de optimizacin:
WHERE SALARIO > ( SELECT MAX(SALARIO)
Fsica o estimacin de coste: FROM EMPLEADO
Traduccin

Elegir el plan de menor coste estimado


Traduccin
alallgebra

WHERE NUMD=5);
Sintctica o reglas heursticas
lgebra

Traduccin

Ordenar las operaciones


Traduccin
alallgebra

Consulta
Utiliza un rbol o un grafo de consultas anidada.
lgebra

Se estudian en la
Semntica asignatura DBD

Generalmente se combinan las dos primeras tcnicas


APELLIDO, NOMBRE(SALARIO >C(EMPLEADO))

Elegir plan de consulta MAX SALARIO(NUMD=5(EMPLEADO))

Elegir plan de consulta

Se
Seevala
evalaslo
slouna
unavez.
vez.
El
Elresultado
resultadosesetrata
tratacomo
como
una
unaconstante
constante(>C)
(>C)

A. Jaime 2005 DBD Tema 7 3 A. Jaime 2005 DBD Tema 7 4


Optimizacin sintctica: Heurstica rbol de consulta

Objetivo: reducir el tamao de las tablas intermedias Representa una expresin del lgebra relacional
Una consulta se puede representar por varios
En forma de Generada por rboles distintos
Optimizador: rbol o de grafo el analizador
sintctico
Reglas heursticas: SELECTP.NMEROP, P.NMD, E.APELLIDO,
E.DIRECCIN, E.FECHA_NCTO
modifican la representacin interna de la consulta FROM PROYECTO AS P, DEPARTAMENTO AS D,
EMPLEADO AS E
Despus se genera un plan de ejecucin:
WHERE P.NMD=D.NMEROD AND
Para ejecutar grupos de operaciones D.NSS_JEFE=E.NSS AND
Segn los caminos de acceso que tengan los P.LOCALIZACIN=Stafford
ficheros
ndices, direccionamiento calculado P.NMEROP, P.NMD,
E.APELLIDO, E.DIRECCIN,
Regla principal: E.FECHA_NCTO

|| D.NSS_JEFE=E.NSS
Primero ejecutar seleccionar () y proyectar ()

Orden de ejecucin
Al final ejecutar reunir (||, *) y otras operaciones
binarias
|| P.NMD=DNMEROD E

P.LOCALIZACINP=Stafford D

A. Jaime 2005 DBD Tema 7 5 A. Jaime 2005 DBD Tema 7 6

rbol de consulta inicial o cannico Optimizacin con rboles: ejemplo

Lo genera el analizador sintctico de manera estndar Transformar el rbol en uno de ejecucin eficiente
Sin optimizar Basada en reglas de equivalencia (r.e.) entre
Primero los , luego condiciones de y ||. Por ltimo expresiones del lgebra relacional
. Reglas heursticas: guan la aplicacin de las r.e.
Muy ineficiente (debido a los )
Apellido de los empleados que
SELECTP.NMEROP, P.NMD, E.APELLIDO, EJEMPLO: trabajan en el proyecto Acuario
E.DIRECCIN, E.FECHA_NCTO nacidos despus de 1957
FROM PROYECTO AS P, DEPARTAMENTO AS D,
SELECT APELLIDO
EMPLEADO AS E
FROM EMPLEADO, TRABAJA_EN, PROYECTO
WHERE P.NMD=D.NMEROD AND
WHERE NOMBREP=Acuario AND NMEROP=NMP
D.NSS_JEFE=E.NSS AND
AND NSSE=NSS AND FECHA_NCTO>31-DIC-1957
P.LOCALIZACIN=Stafford

P.NMEROP, P.NMD,
APELLIDO
NOMBREP=Acuario Y NMEROP=NMP
1
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 PROYECTO
EMPLEADO TRABAJA_EN

E
Los crean un fichero muy grande
Slo se necesita usar la tupla del proyecto Acuario
P D Slo reunir los empleados nacidos despus de 1957

A. Jaime 2005 A. Jaime 2005


Mejor primero los
DBD Tema 7 7 DBD Tema 7 8
Optimizacin con rboles: ejemplo (2) Optimizacin con rboles: ejemplo (3)

APELLIDO APELLIDO 2
NOMBREP=Acuario Y NMEROP=NMP NMEROP=NMP
1

Y NSSE=NSS Y FECHA_NCTO>31-DIC-1957


NSSE=NSS NOMBREP=Acuario
PROYECTO
PROYECTO
EMPLEADO TRABAJA_EN
FECHA_NCTO>31-DIC-1957 TRABAJA_EN

Mejor primero los EMPLEADO

APELLIDO 2

Mejor primer con
proyecto Acuario
NMEROP=NMP | que
Mejor |
ms APELLIDO

3
NSSE=NSS
NSSE=NSS NOMBREP=Acuario

PROYECTO
NMEROP=NMP FECHA_NCTO>31-DIC-1957
FECHA_NCTO>31-DIC-1957

TRABAJA_EN
EMPLEADO
NOMBREP=Acuario
EMPLEADO
TRABAJA_EN


Mejor que el primer sea con el proyecto PROYECTO
Acuario que slo obtiene una tupla
(NOMBREP es clave)
A. Jaime 2005 DBD Tema 7 9 A. Jaime 2005 DBD Tema 7 10

Optimizacin con rboles: ejemplo (4) Optimizacin con rboles: ejemplo (5)
APELLIDO 3
APELLIDO 4
NSSE=NSS
||NSSE=NSS

NMEROP=NMP FECHA_NCTO>31-DIC-1957 ||NMEROP=NMP FECHA_NCTO>31-DIC-1957
EMPLEADO
NOMBREP=Acuario EMPLEADO

NOMBREP=Acuario TRABAJA_EN PROYECTO TRABAJA_EN


Mejor quitar atributos
PROYECTO innecesarios para las
operaciones que siguen
| que
Mejor | APELLIDO
ms 5
||NSSE=NSS
APELLIDO 4
NSSE NSS, APELLIDO
||NSSE=NSS ||NMEROP=NMP FECHA_NCTO>31-DIC-1957
||NMEROP=NMP FECHA_NCTO>31-DIC-1957 NMEROP NSSE, NMP EMPLEADO
NOMBREP=Acuario EMPLEADO NOMBREP=Acuario TRABAJA_EN

PROYECTO TRABAJA_EN PROYECTO

Mejor realizar a la vez todas las Ejemplo:


Mejor eliminar atributos innecesarios operaciones que necesiten una sola subrbol de raz
para las operaciones que siguen visita a los ficheros implicados
NSSE
A. Jaime 2005 DBD Tema 7 11 A. Jaime 2005 DBD Tema 7 12
Reglas de transformacin Reglas de transformacin (2)

El orden en que queden los atributos es indiferente: 7) y || (o ) conmutativas: L=A1...An, B1...Bm


los AiR, los BiS
L(R ||C S) C slo atributos de L

1) Cascada de : c1 AND c2... AND cn(R) A1,...,An(R) ||C B1,...,Bm( S)


c1 (c2 (...(cn (R)...) L(R ||C S)
C con atributos NO
de L, se aade L final
L( A1...An+k(R) ||C B1...Bm+p( S) )
2) conmutativa: c1 (c2 (R)) c2 (c1 (R))
8) e conmutativas ( no conmutativa):
(R S) (S R)
3) Cascada de : lista1(lista2(R)) lista1(R) (R S) (S R)
puede ser
9) ||, , e asociativas: ||, ,
4) y conmutativas: A1,...,An(C(R)) pero la misma en
(R S) T R (S T)
C(A1,...,An(R)) toda la expresin

En C slo atributos de 10) conmutativa con , y : puede ser


A1, ..., An C(R S) C(R) C(S) ,
pero la misma en
5) || conmutativa y conmutativa: toda la expresin
R ||C S S ||C R 11) y conmutativas:
RSSR L(R S) L(R) L(S)

6) y || conmutativas: C(R||S) C(R)||S 12) Transformar condicin en otra equivalente (por


En C slo atributos de R ejemplo aplicando leyes de DeMorgan)
C(R||S) C1(R)||C2(S) NOT (C1 AND C2) (NOT C1) OR (NOT C2)
En C1 slo atributos de R,
en C2 slo atributos de S, NOT (C1 OR C2) (NOT C1) AND (NOT C2)
C = C1 AND C2

A. Jaime 2005 DBD Tema 7 13 A. Jaime 2005 DBD Tema 7 14

Algoritmo de optimizacin heurstica Conversin de los rboles en planes de ejecucin

1) Regla 1: cascada de Ejemplo:


Descomponer C si C tiene ANDs en varias en cascada
NOMBREP,APELLIDO,DIRECCIN
2) Reglas 2, 4, 6 y 10: conmutativa con otras
operaciones ||NMEROD=ND
Mover las C lo ms abajo posible (lo que admitan los NOMBRED=Investigacin EMPLEADO
atributos de C)
DEPARTAMENTO
3) Reglas 5 y 9: conmutatividad y asociatividad
Recolocar las hojas para que los ms restrictivos se Para convertir este rbol en plan de ejecucin:
ejecuten antes (que producen una relacin con menos
tuplas) Elegir bsqueda en ndice para (suponemos que hay
un ndice en el fichero DEPARTAMENTO sobre el atributo
NOMBRED)
4) Regla 12: Combinar y en || Aplicacin de reunin por ciclo anidado para || (se
estudia ms adelante)
5) Reglas 3, 4, 7, 11: cascada y conmutacin de con Explorar el resultado para aplicar
otras operaciones
Por cada lista descomponer lista y mover los sublista Se distinguen dos formas de tratar los resultados
obtenidos lo ms abajo posible.
intermedios o valoraciones:
Crear nuevas si es necesario.
Materializada: supone almacenar en disco la tabla
resultante de realizar la operacin
6) Identificar grupos de operaciones que se puedan
ejecutar con un solo algoritmo (es decir, con un solo Segmentado: Las tuplas resultado de la operacin se
recorrido a los ficheros implicados) van depositando en un bfer de memoria y de all los
va consumiendo la siguiente operacin (todo el
proceso se realiza en memoria)
A. Jaime 2005 DBD Tema 7 15 A. Jaime 2005 DBD Tema 7 16
Algoritmos bsicos Clasificacin (ordenacin) externa

Hay uno o varios por cada operacin del lgebra Ordena el fichero segn alguno de sus campos
Algunos algoritmos exigen una organizacin de datos Mtodo comn estrategia clasificar-fusionar:
determinada (por ejemplo que haya ndice primario)
Fase de clasificar:

Estudiaremos: Ordenar los registros en cada bloque (en el bfer


Seleccin () de memoria)
Reunin (|X|, *) Fase de fusionar:
Otras:
proyeccin () Fusionar 2 a 2 los bloques ordenados para formar
operaciones de conjuntos (,,,X) series de 2 bloques ordenados
Operaciones de agregacin (MIN, MAX, Fusionar 2 a 2 las series anteriores para formar
CUENTA, PROMEDIO, SUMA)
series de 4 bloques ordenados
Empezamos por clasificacin (ordenacin) externa: Seguir as hasta conseguir una nica serie
Uno de los principales algoritmos Dicha serie contiene el fichero ordenado
Usado en: En la fase clasificar la unidad de ordenacin puede ser
|X| y por el mtodo de clasificacin-fusin un grupo de n bloques (llamado run)
e
*
Cuando en cada paso de fusin se fusionan las series dos
DISTINCT ( con eliminacin de duplicados)
a dos el nmero de bloques a transferir para ordenar ser:
ORDER BY
Son algoritmos adecuados para ordenar ficheros 2*b + 2*b *log2 b
que NO entran en memoria principal. En la etapa de
clasificacin se En cada paso de fusin
leen y se se necesitan log2 b
se leen todos los etapas de fusin
escriben todos bloques (b) y se
los bloques escriben todos los
bloques (otros b)

A. Jaime 2005 DBD Tema 7 17 A. Jaime 2005 DBD Tema 7 18

Ejemplo de clasificacin externa: fusin binaria Optimizacin fsica: estimacin de coste


Distribucin: 1 fichero de entrada y 2 de salida
Fusin: 2 ficheros de entrada y 1 de salida a Objetivo: reducir el nmero de bloques transferidos

Fichero 95 110 50 36 10 100 153 40 120 60 70 130 22 80 140 Se basa en estimaciones de coste de las operaciones
original Busca la estrategia de menor coste (puede NO ser la
Clasificacin en cada bloque ptima)

Distribucin 1 Es el enfoque ms apropiado para consultas compiladas


Fichero 1 50 95 110 40 120 153 22 80 140 =A1,A3,A5
En consultas interpretadas: conviene reducir el n de
Fichero 2 10 36 100 60 70 130 =A2,A4
estrategias (puede llevar demasiado tiempo)
Fusin 1
Ficheros 1 y 2 vacos
Fichero 3 10 36 50 95 100 110 40 60 70 120 130 153 Componentes del coste:
Bloques transferidos: depende de las estructuras de
a
22 80 140 = (A1+A2), (A3+A4), (A5+)
Distribucin 2 acceso y de la colocacin de los bloques (contiguos,
mismo cilindro, dispersos)
Fichero 1 10 36 50 95 100 110 22 80 140 =B1,B3
Fichero 2 40 60 70 120 130 153 =B2
Ficheros intermedios generados
Cmputos en memoria sobre los ficheros inter-
Fusin 2
medios: bsqueda, ordenacin, fusin, clculos
Ficheros 1 y 2 vacos
Comunicacin: envo de la consulta y recepcin del
Fichero 3 10 36 40 50 60 70 95 100 110 120 130 153
resultado
22 80 140 = (B1+B2), (B3+)
Distribucin 3
coste principal: Generalmente
Fichero 1 10 36 40 50 60 70 95 100 110 120 130 153 =C1 se usa este
Fichero 2 22 80 140 =C2
a BD grandes: bloques transferidos
BD pequeas (entran en memoria): cmputos
Fusin 3 BD distribuidas: comunicacin
Fichero 3 10 22 36 40 50 60 70 80 95 100 110 120
130 140 153 =(C1+C2) Ordenado
A. Jaime 2005 DBD Tema 7 19 A. Jaime 2005 DBD Tema 7 20
En el catlogo del SGBD: Selectividad de una condicin
informacin para calcular el coste Cardinalidad de seleccin
cardinalidad de seleccin, N de N de valores
Por cada fichero F de la BD se necesita guardar: n medio de registros que registros distintos del
atributo A en el
r=n de registros (tuplas), b=n de bloques ( su fbl) satisface A=valor(F) (*) fichero F

Mtodo y atributo(s) de acceso primario. Adems si est s=r/d


(o no) ordenado y por qu atributo(s)
Si tiene ndice primario (IP), de agrupacin (IA), Selectividad de la condicin A=valor(F),
direccionamiento calculado (DC) o ndices secundarios fraccin de registros de F que la cumple
(IS), y sobre qu atributos
s = sl * r
Por cada ndice (IP, IA, IS): x=n de niveles y bi1=n de
bloques del 1 nivel (hojas)
Ejemplo para un atributo clave:
Por cada atributo A del fichero F: d=r valores distintos en r registros
sl=1/r fraccin de registros obtenidos como resultado
d = n de valores diferentes del atributo en F
s=1 registro en el resultado
sl = selectividad de una condicin A=valor(F):
fraccin de registros (nmero entre 0 y 1) que satisface Ejemplo para un atributo no clave:
la condicin d= 50 valores distintos en 5000 registros
(distribuidos uniformemente)

a s=cardinalidad de seleccin: n medio de registros sl=100/5000=1/50 fraccin de registros obtenidos como


resultado
que satisface A=valor(F)
s=5.000/50=100 registros en el resultado (de media)
(vase a continuacin la relacin entre d, sl y s)
(*) En otras palabras, la cardinalidad de seleccin s del atributo
Algunos datos pueden cambiar a menudo
A en el fichero F es el n medio de repeticiones de un mismo
Se necesita informacin razonablemente actualizada valor de A en F

A. Jaime 2005 DBD Tema 7 21 A. Jaime 2005 DBD Tema 7 22

Algoritmos y funciones de coste Algoritmos y funciones de coste


para seleccionar para seleccionar (2)
Sobre el campo
Basadas en el nmero de bloques transferidos (CSi) S4: ndice primario o de agrupacin, de bsqueda

desigualdad, lectura de varios registros


S1: cualquier fichero, bsqueda lineal (fuerza bruta), Condicin con >, <, si aprox. r/2
cualquier condicin registros satisfacen la condicin:
a) Todos los registros que satisfacen la condicin (no b/2=la mitad de los bloques
CS4= x + b/2
clave o desigualdad con clave): Puede ser muy inexacta
Tambin se puede en casos concretos
CS1a=b
aplicar a un intervalo: 30.000 SALARIO 35.000
b) Uno que la satisfaga, por ejemplo igualdad con
clave: Sobre el campo
S5: ndice de agrupacin, de bsqueda
CS1b=b/2
Por el campo de
bsqueda
igualdad, lectura de varios registros
Condicin de igualdad:
S2: fichero ordenado, bsqueda binaria (*), condicin
de igualdad CS5= x+s/fbl s = cardinalidad de seleccin. N reg

a) Sobre atributo clave: CS2a=log2 b Sobre el campo


b) sobre atributo NO clave: CS2b=log2 b + s/fbl - 1 S6: ndice secundario (B+) de bsqueda

a) Condicin de igualdad con no clave:


S =cardinalidad de seleccin (n reg.)
CS6a= x + s (cada registro en un bloque distinto)
No se ha tenido en cuenta el nivel
adicional de indireccin en IS-nc

S3: ndice primario o dir. calculado, Sobre el campo b) Condicin de igualdad con clave
de bsqueda
bsqueda de 1 registro, condicin de igualdad CS6b= x + 1
a) ndice: CS3a= x + 1 (x=n de niveles) c) Condicin con >, <, si aprox. r/2
b) Direccionamiento calculado: satisfacen la condicin
r/2= mitad de los registros
CS3b= 1 (aprox. para el esttico) CS6c= x + (bi1/2) + (r/2) a travs del ndice
(*) Generalmenteno se usa porque en BD no se suelen usar ficheros bi1/2 =mitad de bloques con hojas
ordenados salvo si hay ndice primario
Tambin se puede (nivel 1 del ndice)
aplicar a un intervalo

A. Jaime 2005 DBD Tema 7 23 A. Jaime 2005 DBD Tema 7 24


Tipos de fichero y algoritmos de seleccin Tipos de fichero y algoritmos de seleccin (2)
NOTA: por Resto de campos se entiende campos sobre los que no
hay definido ningn ndice secundario. Si lo hubiera NOTA: por Resto de campos se entiende campos sobre los que no
considerar lo que se dice para este tipo de ndice hay definido ningn ndice secundario. Si lo hubiera
considerar lo que se dice para este tipo de ndice
Ejemplo de fichero de montn Ejemplo de fichero ordenado
Campo de ordenacin
Bloque 1

Adams, Robin

Bloque 1
Abbott, Diane Aaron, Ed
Wright, Pam Abbott, Diane
Acosta, Marc Ejemplo de fichero con ndice primario Ejemplo de fichero con ndice de agrupacin
Adams, John Clave Campo de
Bloque 2

Zimmer, Byron Adams, John primaria agrupacin


Bloque 2
1
Akers, Jan Adams, Robin 2 1
5
Akers, Jan 5 1
...

...
Aaron, Ed 8
Bloque n

Wyatt, Charles Wright, Pam 9 9 1


Bloque n

Wyatt, Charles 1 3 3
Acosta, Marc 16 15
Zimmer, Byron 16 7 7
Algoritmos de seleccin: S1 3
28 24
Algoritmos de seleccin: 7
Sobre campo de ordenacin: S1, S2a, S2b 28
9
Resto de campos: S1 7
Ejemplo de fichero de direccionamiento calculado 9
Campo de dir. Algoritmos de seleccin:
calculado Sobre clave primaria:
340 S1, S2a, S3a, S4 Algoritmos de seleccin:
460 Campo de dir. Resto de campos: S1 Sobre campo de agrupacin:
calculado
580 981 nulo Algoritmos de S1, S2b, S4, S5
seleccin: Resto de campos: S1
321 Sobre campo de dir.
0
761 182 calculado: S1, S3b
1
...

91 Resto de campos: S1
...

nulo
652 nulo
...

M-1
399
89
630

A. Jaime 2005 DBD Tema 7 25 A. Jaime 2005 DBD Tema 7 26

Seleccin compleja (con varios atributos):


Tipos de fichero y algoritmos de seleccin (3)
condiciones conjuntivas, A B C ... (sin OR)
NOTA: por Resto de campos se entiende campos sobre los que no Cualquier comparacin:
hay definido ndice secundario, campo de ordenacin, de direccionamiento S7: ndice individual =, >, <,
calculado, ndice primario ni secundario. Si lo hubiera considerar lo que (o estructura)
se dice para cada caso
A1=valor1 A2=valor2 ...
Ejemplo de fichero con ndice secundario Ejemplo de fichero con ndice secundario Debe haber una estructura entre S2, S3, S4, S5
sobre campo clave sobre campo NO clave
Campo de S6 (por ejemplo S3 para A1)
Campo de
indexacin
2 indexacin ... 3
Obtener registros para A1 (usando mtodo S3)
5 1
5 2 7 Con cada registro obtenido: comprobar resto
condicin (cuando el registro est en memoria)
8 ... 1
5 3 S8: ndice compuesto (A1, A2) slo =
24 1 9
9 9 9 ( direccionamiento calculado compuesto)
7 7
3
A1=valor1 A2=valor2 ...
...
15 7 Usar directamente el mtodo asociado al ndice
9
15 15 S9: Por interseccin de apuntadores a registro
16 1
... 3 ndices secundarios en varios atributos de la
16
condicin (o ndices con apuntador a registro y no a bloque)
24
Para cada ndice: guardar en memoria los
8 Algoritmos de seleccin:
24 Sobre clave secundaria: S1, S6a, S6c punteros que cumplen la condicin
28 28 Resto de campos: S1
de los punteros en memoria
Obtencin de los registros desde disco a partir
de los punteros en memoria
Algoritmos de seleccin: Para los atributos sin ndice: comprobar resto de
Sobre clave secundaria: S1, S6b, S6c
Resto de campos: S1 condicin una vez se trae cada registro a memoria

A. Jaime 2005 DBD Tema 7 27 A. Jaime 2005 DBD Tema 7 28


Seleccin compleja (con varios atributos):
Ejemplos de uso de coste en seleccionar
condiciones disyuntivas (con OR)
DATOS del fichero EMPLEADO:
Ejemplo ND=5 OR SEXO=M(EMPLEADO) rE=10.000 registros, bE=2.000 bloques
(fblE= rE/ bE=5 registros/bloque)
Ms difciles de procesar y optimizar ndices definidos:
El resultado es la unin de los registros que IA(SALARIO): xSALARIO=3, sSALARIO=20
cumplen cada subcondicin IS-c(NSS): xNSS=4, sNSS=1 (clave)
Si hay alguna subcondicin sin camino de IS-nc(ND): xND=2, bi1ND=4, dND=125 valo-
res distintos sND=(rE/dND)=80
acceso: fuerza bruta a toda la consulta
IS-nc(SEXO): xSEXO=1, dSEXO=2 sSEXO=
Al final: aplicar para eliminar duplicados (rE/dSEXO) = 5.000

S1 se calcula una vez


S1: CS1a=bE=2.000 (no clave) y se tiene en cuenta
en todas las consultas
CS1b=bE/2=1.000 (clave) sobre EMPLEADO

1) NSS=123456789: se puede usar S1b S6b


CS6b= xNSS+1 = 5
Mejor aplicar el algoritmo S6b

2) ND>5: se puede usar S1a S6c


CS6c= xND + (bi1ND/2) + (rE/2) =
= 2 + 4/2 +10.000/2 =5.004
Mejor aplicar el algoritmo S1a

A. Jaime 2005 DBD Tema 7 29 A. Jaime 2005 DBD Tema 7 30

Algoritmos para reunin


Ejemplos de uso de coste en seleccionar (2)
considerando registros
3) ND=5: se puede usar S1a S6a De las que ms tiempo consumen
CS6a= xND+sND = 2 + 80 = 82 (mejor que S1a) Ms habitual: equirreunin y reunin natural
Mejor aplicar el algoritmo S6a Reunin bidireccional: 2 ficheros. Multidireccional:ms de 2.

4) ND=5 AND SALARIO>30.000 AND SEXO=F: se puede Aqu consideraremos este tipo de reunin:
aplicar el algoritmo S7
1 ND=5: CS6a= 82 R |X|A=B S
1 SALARIO>30.000: CS4= xSALARIO + bE/2 =1.003 Ahora se presentan los 4 algoritmos considerando
1 SEXO=M: CS6a= xSEXO+sSEXO = 1+5.000 = 5.001 slo registros. Despus se revisan considerando
Lo mejor es aplicar S7 de la siguiente forma: bloques.
usar S6a para ND=5 y para cada registro obtenido
comprobar el resto de la condicin en memoria
(SALARIO >30.000 AND SEXO=F) R1: Bucle anidado (fuerza bruta) R |X|A=B S
Para cada rR
5) ND=5 OR SALARIO>30.000 OR SEXO=F: condicin Para cada sS
disyuntiva. La nica alternativa a la fuerza bruta es Si r[A]=s[B] obtener tupla con r y s
R |X|A=B S Fin
calcular cada subcondicin por separado y hacer la
unin de los resultados: Por ejemplo, S tiene un
82 + 1.003 + 2.000 + unin = 3.085 + unin ndice sobre el atributo B
Lo mejor es aplicar directamente el algoritmo S1a y
comprobar toda la condicin en cada registro
R2: Bucle nico (estructura de acceso) R |X|A=B S
Para cada rR
acceder con la estructura a S y encontrar
las tuplas con s[B]=r[A]
R |X|A=B S Para cada s encontrada obtener tupla con r y s
Fin

A. Jaime 2005 DBD Tema 7 31 A. Jaime 2005 DBD Tema 7 32


Algoritmos para reunin Ejemplo de ejecucin del algoritmo R1
considerando registros (2) considerando bloques
R3: Clasificacin-fusin R |X|A=B S Paso 1 ciclo externo:
Ordenar ficheros desordenados (R por A, S por B) DISCO
DISCO
R1
Recorrer R y S a la vez encontrando registros Bloque Fichero R Bloque Fichero S
R2
coincidentes R1 S1
MEMORIA
R3
Una visita por registro
R4
Si A y B no clave: modificacin del algoritmo R2 S2
S1, S2,
Tambin usando ndice secundario: S3, S4 S1-R1, S1-R2
Ineficiente por cada registro acceso a 1 bloque R3 S3 S1-R3, S1-R4
diferente S2-R1, S2-R2
S2-R3, S2-R4
R4 S4
R4: Con direccionamiento calculado R |X|A=B S S3-R1, S3-R2
S3-R3, S3-R4
1) Fase de particin: R5 S4-R1, S4-R2
S4-R3, S4-R4
Tomar el fichero con menos registros (ej. R)
Crear un fichero de dir. calculado vaco R R6
Paso 2 ciclo externo:
Recorrer R:
R7 R5
Insertar sus registros en R
R6
Campo A como clave de dir. calculado MEMORIA
R7
2) Fase de prueba: (algoritmo R2 sobre R) MEMORIA
MEMORIA
Recorrer S: Bferes para Bfer para Bfer para
fichero R fichero S resultado S1, S2,
Aplicar funcin de dir. calculado (la misma S3, S4 S1-R5, S1-R6
usada para R) al valor del campo B S1-R7
S2-R5, S2-R6
Obtener las tuplas reunin donde coincidan el S2-R7
valor de S[B] y R[A]
S3-R5, S3-R6
En esta versin simplificada del algoritmo se S3-R7
supone que R entra en memoria S4-R5, S4-R6
S4-R7

A. Jaime 2005 DBD Tema 7 33 A. Jaime 2005 DBD Tema 7 34

Ejemplo de ejecucin del algoritmo R2


Frmulas para reunin: R1
considerando bloques
Ejemplo: EMPLEADO |X|ND=NMEROD DEPTO
rD= 50 registros, bD=10 bloques
rE= 6.000 registros, bE=2.000 bloques Uno para leer el otro
nB= 7 bferes fichero y otro para DISCO MEMORIA
MEMORIA
obtener los bloques DISCO
Conviene: del resultado Bfer para fichero R
Bloque Fichero R Fichero S Bloque
Leer 5 bloques (nB-2) de un fichero 3
Procesar el otro fichero en ciclo interno para esos bloques R1 5 1
(usando uno de los bferes libres) 6 Bfer para fichero S
6 36
9 S1
Hacer lo mismo para los siguientes 5 bloques R2 12
1
As hasta acabar 23 6
35 Bfer para resultado
35 S2
35 6
R3 36
1) Usando EMPLEADO en ciclo exterior: 41 36
Ciclo interno
Ciclo externo
bE+ bE/(nB-2) * bD = 6.000 accesos a bloque
Veces que se lee todo DPTO N bferes
Paso 1 sobre R: Paso 2 sobre R: Paso 3 sobre R:
R1 R2 R3
2) Usando DEPTO en ciclo exterior: S2,
S2 nada
S1
Ciclo interno
Ciclo externo
bD+ bD/(nB-2) * bE = 4.010 accesos a bloque
R.6-S.6 nada R.35-S35
Veces que se lee todo EMPLEADO N bferes R.36-S.36

El otro bfer libre se usa para ir escribiendo el resultado


Mejor el fichero con menos bloques en ciclo exterior

A. Jaime 2005 DBD Tema 7 35 A. Jaime 2005 DBD Tema 7 36


Frmulas para reunin: R2 Frmulas para reunin: R3
Rene cada
departamento
con 1 Mtodo muy eficiente si estn ya ordenados por el
Ejemplo: DEPTO |X|NSS_JEFE=NSS EMPLEADO empleado
atributo de reunin: Se lee una vez cada fichero
rD= 50, bD=10, rE= 5.000, bE=2.000
4.950 empleados sin reunir (rE- rD) Ejemplo: EMPLEADO |X|ND=NMD DPTO
IS-c(NSS_JEFE) en DEPTO con xNSS_JEFE=2
rD= 50, bD=10, rE= 5.000, bE=2.000
IS-c(NSS) en EMPLEADO con xNSS=4 bD+ bE = 2.010 accesos a bloque
Si hay que ordenarlos:
1) Recorriendo EMPLEADO y usando IS-c(NSS_JEFE) de 2*bE*(1+log2 bE) + 2*bD*(1+log2 bD) + bE + bD
DEPTO:
Bsqueda mediante IS-c (S6b) Ordenar E Ordenar D Reunir por fusin
Ciclo

bE+ rE * (xNSS_JEFE+1) = 17.000 accesos a bloque

2) Recorriendo DPTO y usando IS-c(NSS) de EMPLEADO:


Paso 1 sobre R:
Ciclo Bsqueda mediante IS-c (S6b) DISCO
DISCO
Bloque Fichero R Bloque Fichero S R1 S1
bD+ rD * (xNSS+1) = 260 accesos a bloque
3 1
R1 5 S1
6 6 R.6-S.6
Mejor la 2 opcin: mayor factor de seleccin de reunin 9 35 Paso 2 sobre R:
R2 12 S2
23 36
Factor de seleccin de reunin: R2 S2
35
% de registros de un fichero que se reunirn R3 36
41
nada
Depende de la condicin de equirreunin
En el ejemplo anterior: Paso 3 sobre R:
EMPLEADO 50/5.000=0,01 R3 S2
DPTO 1
R.35-S.35
Mejor en el ciclo el fichero menor o el de mayor R.36-S.36
factor de seleccin de reunin
A. Jaime 2005 DBD Tema 7 37 A. Jaime 2005 DBD Tema 7 38

Frmulas para reunin: R4 (2)


Frmulas para reunin: R4
Reunin por dispersin partida
Mtodo muy eficiente: se lee una vez cada fichero, estn R |X|A=B S
o no ordenados Para el fichero ms pequeo
Si cabe en memoria el fichero de direcc. calculado: Se toma una funcin de dir. calculado que divida en M
particiones y se aplicar a R.A y S.B
Implementacin fcil
bD+ bE = 2.010 accesos a bloque Fase de particin: una iteracin por cada fichero
Cada fichero se divide en M particiones (con la
MEMORIA
MEMORIA misma funcin de direccionamiento calculado)
DISCO
DISCO Bfer para fichero R
Las 2*M particiones se van colocando en disco
Bloque Fichero R Bloque Fichero S
3 36 Fichero S en memoria Se utilizan M bferes (uno por particin)
R1 5 S1 en fichero de dir. calculado
6 1 36 Cuando se llena un bfer: escribir en disco (en su cubeta)
0
9 1
R2 12 S2
35
2 35 Fase de prueba: M iteraciones
23 6 3 1
4
6
En la iteracin i se renen las particiones Ri y Si
35 Paso inicial:
R3 36 volcar fichero Se necesitan tantos bferes como bloques haya en el
41 ms pequeo a Bfer para resultado
un fichero de menor entre Ri y Si ms dos bferes adicionales
dir. calculado
en memoria (uno para leer la particin del otro fichero y otro
para el resultado)
Paso 1 sobre R: Paso 2 sobre R: Paso 3 sobre R:
Hay 2 alternativas para hacer la reunin:
R1 R2 R3
1) Ciclo anidado
2) Los bferes funcionan como fichero de dir.
R.6-S.6 nada R.35-S35 calculado, usando una funcin de dir. calculado
R.36-S.36
diferente a la de la fase de particin
Si no cabe en memoria: Ms complejo. Se proponen Frmula: 3 * (bR+ bD)
variaciones para mejorar la eficiencia, como la reunin leer, escribir en fichero de dir.
por dispersin partida y la reunin por dispersin calculado y leer de nuevo para, por
hbrida fin, ir reuniendo
A. Jaime 2005 DBD Tema 7 39 A. Jaime 2005 DBD Tema 7 40
Frmulas para reunin: R4
Estimacin del tamao del resultado
Reunin por dispersin hbrida
Parecido a la reunin por dispersin partida
En la fase de particin: R |X|A=B S
Se guarda en memoria la primera cubeta Selectividad de reunin (sr):
completa del primer fichero |R| = n tuplas de R
sr = |R |X|A=B S| / |R r S| =
Se rene en memoria con la primera cubeta del
segundo fichero |R |X|A=B S| / (|R| * |S|)
En la fase de prueba: multiplicacin
solo hacen falta M-1 iteraciones gracias al 0 sr 1: sr=1 R r S (producto cartesiano)
tratamiento en memoria de la primera cubeta de sr=0 0 tuplas satisfacen la condicin
ambos ficheros.
Conocido un valor aproximado de sr:
N de registros |R |X|A=B S| = sr *|R| * |S|
estimados como
resultado
de la reunin
Por tanto el nmero de bloques estimado del resultado
de la reunin ser:

bresultado= (sr*|R|*|S|) / fblRS

N reg. estimados Factor bloques


en el resultado resultado

Factor de seleccin: se aplica a un fichero en R2.


Sirve para saber qu fichero conviene en ciclo externo
Selectividad de reunin sr: se aplica al resultado de la reunin.
Sirve para calcular el tamao aproximado del resultado

A. Jaime 2005 DBD Tema 7 41 A. Jaime 2005 DBD Tema 7 42

Funciones de coste para reunin


Ejemplo de uso de coste en reunin
R |X|A=B S
EMPLEADO: rE=10.000 registros, bE=2.000 bloques
R1: bucle anidado (fuerza bruta)
Con un solo bfer ndice secundario NSS: xNSS=4, sNSS=1 (clave)
Ciclo exterior sobre R: secundario ND: xND=2, sND=80
por fichero
CR1=bR + (bR*bS)
DEPTO: rD=125 registros, bD=13 bloques
Lecturas Lecturas Considerando el n de bferes, el ndice primario NMD: xNMD=1, sNSS=1 (clave)
ciclo exterior ciclo interior ciclo interior sera:
secundario NSS_JEFE: xNSS_JEFE=2, sNSS_JEFE=1 (clave)
(bR*bS)/(n bferes-2)
R2: bucle nico (estructura de acceso) EMPLEADO |X|ND=NMD DEPTO
ciclo n niveles Cardinalidad seleccin No calcularemos las
a) R1: EMPLEADO en ciclo exterior dos opciones. Slo
. secundario: CR2a= bR + (|R|*(xB+sB)) el ms pequeo en el
. agrupacin: CR2b= bR + (|R|*(xB+(sB/fblB)) CR1=bE + (bE*bD) = 28.000 ciclo exterior

. primario: CR2c= bR + (|R|*(xB+1)) b) R1: DEPTO en ciclo exterior


Dir. calculado: CR2d= bR + (|R|*h) CR1=bD + (bE*bD) = 26.013
c) R2: EMPLEADO en ciclo No tiene por qu
h1, nmero medio de haber ndice
R3: clasificacin-fusin accesos necesarios CR2c=bE + rE*(xNMD+1) =22.000 sobre ambos
atributos
Fich. ya ordenados:CR3a= bR + bS Slo si hay que d) R2: DEPTO en ciclo
ordenar R CR2a=bD + rD*(xND+sND) = 10.263
Ordenacin previa: CR3b= 2*bR*(1+log2bR) +
2*bS*(1+log2bS) + Entre estas se escogera la ltima opcin
Slo si hay que
b R + bS ordenar S Usando 15 bferes (en lugar de 3) DEPTO entra en memoria
en 13 bferes y el caso b) baja a 2.013 accesos, y sera
R4: direccionamiento calculado (dispersin partida) la mejor opcin Se obtiene dividiendo
Fich. entra en memoria: CR4a= bR + bS (bE*bD ) entre 13
NO entra en memoria: CR4b= 3*(bR + bS)
A. Jaime 2005 DBD Tema 7 43 A. Jaime 2005 DBD Tema 7 44
Ejemplo de uso de coste en reunin (2) Orden de ejecucin de las reuniones

e) R3: DEPTO ya esta ordenado, EMPLEADO no: La reunin es conmutativa y asociativa.


CR3a-b= 2*bE*(1+log2 bE) + bE + bD 45.500 Ello genera numerosas expresiones equivalentes cuando
se renen ms de dos tablas en la misma expresin
f) R4: si DEPTO entra en memoria: El clculo del coste de cada alternativa puede llevar un
CR2c=bE + bD = 2.013 tiempo importante al optimizador

|X|
g) R4: si DEPTO NO entra en memoria
CR2a 3*(bE + bD) = 6.039 |X| R4

|X| R3

Considerando tambin estas, si DEPTO entra en R1 R2


memoria, R4 y R1 (con 15 bferes) son las mejores
opciones (equivalentes) Generalmente el estudio se reduce al rbol de
Si DEPTO NO entra en memoria, R4 es la mejor profundidad a izquierdas (o el de prof. a derechas):
opcin rbol binario donde la rama derecha de cada nodo
(salvo las hojas) corresponde a una relacin de base
Es mejor R2 con 15 bferes R1 con 15 bferes? Se toma el rbol de menor coste estimado
Cul ser la mejor opcin si el ndice sobre el Una ventaja de este tipo de rbol es que acepta la
atributo ND de empleado fuese de agrupacin en segmentacin
lugar de secundario (con igual x y s)? Si se utiliza materializacin habr que encontrar el
ordenamiento que produce tablas temporales intermedias
ms pequeas

A. Jaime 2005 DBD Tema 7 45 A. Jaime 2005 DBD Tema 7 46

Ejemplo de optimizacin basada en el coste Ejemplo de optimizacin basada en el coste (2)

DATOS P.LOCALIZACINP=Stafford(P)
tbl r b atrib. d s estr. x bi1 CS1a: bP=100
Localiz.P 200 10 IS 2 4 CS6a: x+s =2+10=12Mejor S6a
P 2.000 100 NmeroP 2.000 1 Resultado 10 (s) registros. Entran en 1 bloque (fblP=20)
NmD 50 40 Materializado: en TEMP1 (r=10, b=1)
NmeroD 50 1
D 50 5 Orden reuniones. Estudio de la alternativa 1: Supuesto que se
NSS_Jefe 50 1 renen todos los
NSS 10.000 1 IS 2 50 TEMP1|| P.NMD=D.NMEROD D registros de TEMP1
y que fblT1D=5
E 10.000 2.000 ND 50 200 CR1: bT1+(bT1*bD)+bres.=1+(1*5)+10/5 = 8
Salario 500 20 IS 2 50 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
SELECT P.NMEROP, P.NMD, E.APELLIDO
FROM PROYECTO AS P, DEPARTAMENTO AS D, EMPLEADO AS E CR4: bT1+bD+ bres .= 1+5+10/5 = 8
WHERE P.NMD=D.NMEROD AND D.NSS_JEFE=E.NSS AND Mejor R1 R4
P.LOCALIZACIN=Stafford Materializado: en TEMP2 (r=10, b=2) Supuesto que se
renen todos los
TEMP2 || D.NSS_JEFE=E.NSS E registros de TEMP2
Optimizacin y que fblT1D=5
CR1: bT2+(bT2*bE)+ bres.= 2+(2*2.000)+10/5.= 4.004
heurstica
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=
P.NMEROP, P.NMD, 2*2*(1+1)+2*2.000*(1+11)+2+2.000+10/5= 50.010
E.APELLIDO Alternativas
|| D.NSS_JEFE=E.NSS CR4: bT2+bE+ bres .= 2+2.000+10/5 = 2.004
(a izdas):
1. P || D || E Mejor R2
|| P.NMD=D.NMEROD E Orden
reuniones 2. D || P || E Supuesto que se hace segmentado, la alternativa 1
P.LOCALIZACINP=Stafford D 3. D || E || P
precisa: 12+1+8+34=56 transferencias de bloque
4. E || D || P
P 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 47 A. Jaime 2005 DBD Tema 7 48


Algoritmos para funciones agregadas (MIN, MAX,
Algoritmos para: , , , , X
COUNT, AVG, SUM) y agrupacin (GROUP BY)

Proyectar () SELECT MAX(Salario) FROM Empleado


Implementacin fcil si incluye una clave Si hay ndice sobre Salario:
Si no incluye clave precisa eliminar tuplas repetidas: Permite calcular MAX siguiendo los punteros derechos
Ordenando el resultado y MIN siguiendo los punteros izquierdos.
Tambin usando direccionamiento calculado (si ya
est no se inserta) Si es denso se puede calcular COUNT, AVG y SUM
usando nicamente los valores del ndice
Operaciones de conjuntos: , , , X Si NO es denso se puede usar para COUNT
Pueden ser costosas (DISTINCT ...)
X muy costosa: sustituir por operaciones equivalentes Si NO es denso el resto de operaciones se puede
, , son compatibles con la unin: calcular usando slo el ndice si por cada entrada del
Se emplean variaciones de clasificacin-fusin ndice se almacena el n de registros con ese valor
(R3)
SELECT ND, AVG(Salario)
Ordenacin de los 2 ficheros (segn mismos atributos)
Para la fusin basta una pasada FROM Empleado
Ms fcil ordenando atributos clave nicos GROUP BY ND
Tambin usando direccionamiento calculado GROUP BY precisa dividir la tabla en subconjuntos de
tuplas con el mismo valor del atributo ND
Se usa clasificacin o direccionamiento calculado.
Despus se calcula la funcin (AVG) sobre cada
grupo.
Si hay ndice de agrupacin (sobre ND) las tuplas con
el mismo valor de agrupacin estn juntas y slo
queda calcula la funcin sobre cada grupo

A. Jaime 2005 DBD Tema 7 49 A. Jaime 2005 DBD Tema 7 50

Algoritmos para la reunin externa Combinar operaciones mediante segmentacin

SELECT Apellido, NombreD Sirve para reducir el nmero de ficheros temporales


FROM Empleado LEFT OUTER JOIN Departamento A medida que se obtienen las tuplas del resultado
ON ND=NmeroD de una operacin se proporcionan como entrada
para las operaciones posteriores
Puede calcularse modificando cualquiera de los algoritmos Ejemplo: 2 selecciones + 1 reunin + 1 proyeccin
vistos para reunin En una pasada 2 selecciones y reunir
El ejemplo anterior se puede resolver modificando R1 Aplicarles proyeccin antes de escribir
(bucle anidado) de la siguiente manera: Todo en una pasada
Recorrer Empleado en el bucle externo Sin haber creado ningn fichero temporal
Si hay tuplas coincidentes en Departamento se renen
Si no hay se construye una tupla con la de Empleado y
valores nulos en los atributos de Departamento
Otra posibilidad es ejecutar una combinacin de
operaciones del lgebra. Para el ejemplo anterior:

TEMP1Apellido, NombreD(Empleado |X| Departamento)


TEMP2 Apellido(Empleado) Apellido(TEMP1)
TEMP3 TEMP2 X nulo asignar valor nulo
como valor de
RESULTADO TEMP1 TEMP3 NombreD

TEMP2 y TEMP3 se pueden obtener en la misma


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 en ORACLE (versin 7) Optimizacin semntica

1) Mtodo basado en reglas Objetivo: simplificar la pregunta inicial


Se eligen planes de ejecucin basados en
Empleados que ganan
operaciones clasificadas heursticamente
Ejemplo: ms que su supervisor
Tabla con 15 caminos de acceso clasificados por
SELECT E.APELLIDO
categoras (la ms baja corresponde al mtodo ms eficiente)
FROM EMPLEADO AS E INNER JOIN
Se est retirando en favor del mtodo siguiente
EMPLEADO AS S
2) Mtodo basado en coste estimado
ON E.NSS_SUPERV = S.NSS
Se examinan caminos de acceso y algoritmos
WHERE E.SALARIO > S.SALARIO
alternativos para cada operador
Se elige el plan con menor coste estimado: el
objetivo es minimizar el tiempo necesario Supongamos que existe la siguiente restriccin de
La informacin estadstica del catlogo se em- integridad semntica:
plea de modo similar a lo descrito en este tema. ningn empleado puede ganar ms que su
El clculo del coste considera el uso de recursos: supervisor directo
E/S, CPU y memoria.
El desarrollador puede especificar pistas al No hace falta procesar la consulta anterior
optimizador: el primero puede tener ms ya que no devolver ninguna tupla
informacin sobre los datos que el segundo
Ejemplo de pista: IS-nc(Sexo) para EMPLEADO. Esto puede ahorrar mucho tiempo cuando se puede
10.000 registros. El optimizador supondr que hay comprobar las restricciones con eficiencia
5.000 hombres. El desarrollador sabe que solo hay 100
y conviene usar el IS-nc(Sexo) Una bsqueda entre muchas restricciones para ver
cul es aplicable puede consumir mucho tiempo
Posibles pistas a indicar en una sentencia SQL:
Mtodo de optimizacin a usar Con la inclusin de reglas activas a las BD (tambin
Camino de acceso para una tabla accedida llamadas disparadores o triggers) puede que se incorporen
El orden de las reuniones
Una operacin de reunin concreta estas tcnicas a los SGBD del futuro

A. Jaime 2005 DBD Tema 7 53 A. Jaime 2005 DBD Tema 7 54

Estimacin coste: frmulas seleccin

S1: Lineal
a. Todos: CS1a=b
b. Uno: CS1b=b/2

S2: Binaria
a. (=) clave: CS2a=log2 b

Frmulas b. (=) no clave: CS2b=log2 b + s/fbl - 1

de
S3: 1 registro
a. Primario: CS3a= x + 1
b. Dir. calculado:CS3b= 1

estimacin S4: Varios registros . primario/. agrupacin (>,<, )

de coste
CS4= x + b/2 (r/2 reg. satisfacen)

S5: Varios registros . agrupacin (=)


CS5= x+s/fbl

S6: . secundario (B+)


a. (=) no clave: CS6a= x + s
b. (=) clave: CS6b= x + 1
c. (>,<, ) clave o no clave:
CS6c= x + (bi1/2) + (r/2) (r/2 registros satisfacen)

A. Jaime 2005 DBD Tema 7 55 A. Jaime 2005 DBD Tema 7 56


Estimacin coste: frmulas reunin

R1: bucle anidado (ciclo exterior sobre R y n bferes):


CR1= bR + (bR*bS)/(n-2)
R2: bucle nico (ciclo sobre R)
a. . secundario: CR2a= bR+ |R|*(xB+sB)
b. . agrupacin: CR2b= bR+ |R|*(xB+(sB/fblB))
c. . primario: CR2c= bR+ |R|*(xB+1)
d. Dir. calculado:CR2d= bR+ |R|*1
R3: clasificacin-fusin
a. Ya ordenados: CR3a= bR+ bS
b. Sin ordenar: CR3b= 2*bR*(1+log2bR) +
Ejercicios
2*bS*(1+log2bS) +
bR+ bS
R4: direccionamiento calculado (dispersin partida)
a. Fich. entra en memoria: CR4a= bR+ bS
b. NO entra en memoria: CR4b= 3*(bR + bS)

A. Jaime 2005 DBD Tema 7 57 A. Jaime 2005 DBD Tema 7 58

Ejercicio: optimizacin por estimacin de coste Ejercicio: optimizacin heurstica


en BD Empresa en BD Empresa
Cul ser la forma ms conveniente de realizar las Escribe los rboles cannico y optimizado corres-
siguientes operaciones? pondientes a las siguientes consultas:
EMPLEADO: rE=10.000 registros, bE=2.000 bloques
ndice secundario NSS: xNSS=4, sNSS=1 (clave) a)
secundario ND: xND=2, sND=80 SELECT NMEROP, NMD, APELLIDO, DIRECCIN,
FECHA_NCTO
DEPTO: rD=125 registros, bD=13 bloques FROM PROYECTO, DEPARTAMENTO, EMPLEADO
ndice primario NMD: xNMD=1, sNMD=1 (clave) WHERE NSS_JEFE=NSS AND NMD=NMEROD AND
secundario NSS_JEFE: xNSS_JEFE=2, sNSS_JEFE=1 (clave) LOCALIZACINP=Stafford

a) NMD>10 AND FECHA_NCTO>1957 AND NSS_JEFE=111 DEPTO


b)
b) EMPLEADO |X| NSS= NSS_JEFE DEPTO SELECT NOMBRED, APELLIDO, NOMBRE, NOMBREP
FROM DEPARTAMENTO, EMPLEADO, TRABAJA_EN,
c) EMPLEADO |X|NSS_SUPERV=NSS EMPLEADO PROYECTO
WHERE NMEROD=ND AND NSS=NSSE AND
d) Qu cambia en a), b) y c) si se sustituye el ndice NP=NMEROP
primario de DEPTO por un fichero de direccionamiento
calculado sobre NMD c)
SELECT NOMBRE, APELLIDO, 1.1*SALARIO
e) Qu cambia en a), b) y c) si se sustituye el ndice
FROM EMPLEADO, TRABAJA_EN, PROYECTO
primario de DEPTO por un ndice secundario sobre
WHERE NSS=NSSE AND NP=NMEROP AND
NMD (con x=2, bi1=25 y s=1), y en lugar de ndice
NOMBREP=ProductoX
secundario de DEPTO se tiene un fichero de
direccionamiento calculado sobre NSS_JEFE.

A. Jaime 2005 DBD Tema 7 59 A. Jaime 2005 DBD Tema 7 60


Ejercicio: optimizacin por estimacin de Ejercicio: optimizacin por estimacin de
coste en BD Mariposas coste en BD viviendas
El fichero MARIPOSA tiene las siguientes caractersticas: El fichero PERSONA tiene las siguientes caractersticas:
r=200.000 registros y fbl=10 (log220.000=15), r=250.000 registros y b =12.500 bloques.
ndice secundario sobre EsperanzaVida: ndice primario sobre DNI:
xEsperanzaVida = 2 niveles del rbol B+ xDNI=4 niveles de rbol B+.
sEsperanzaVida = 200 registros tienen de promedio bi1=63 bloques de hojas del rbol B+.
el mismo valor de EsperanzaVida ndice secundario sobre el par de atributos
bi1= 4 bloques de hojas del rbol B+ (NombreZona, NmCasa):
ndice secundario sobre Hbitat: X(NombreZona,NmCasa) = 6 niveles de rbol B+.
xHbitat = 2 niveles del rbol B+ s(NombreZona,NmCasa) = 5 registros satisfarn en
bi1= 4 bloques de hojas del rbol B+ promedio la condicin de igualdad
sHbitat= 40 registros tienen de promedio el bi1=130 bloques de hojas del rbol B+.
mismo valor de Hbitat
Cul ser la forma ms apropiada de realizar cada una
Cul ser la forma ms apropiada de realizar cada una de las siguientes operaciones:
de las siguientes operaciones: a) DNI >=15.000.000 (PERSONA)
a) EsperanzaVida=1 (MARIPOSA) b) DNI >=15.000.000 AND NombreZona=Ulia AND NmCasa=3
b) EsperanzaVida=1 AND Hbitat=hmedo (MARIPOSA) (PERSONA)
c) M1 MARIPOSA c) P1 PERSONA
M2 MARIPOSA P2 PERSONA
M1 |X| M1.EsperanzaVida = M2.EsperanzaVida M2 P1 |X| P1.NombreZona = P2.NombreZona P2
si puede utilizarse un total mximo de 102 bferes si puede utilizarse un total mximo de 12 bferes

A. Jaime 2005 DBD Tema 7 61 A. Jaime 2005 DBD Tema 7 62

Ejercicio: optimizacin por estimacin de Ejercicio: optimizacin heurstica en BD


coste en BD Comida rpida Comida rpida
A partir de la siguiente consulta SQL el
Artculo NomArt Tipo Precio Tamao Art_Ingr NomArt NomIngr
optimizador llega, en un paso intermedio, al rbol
de consulta que figura a continuacin. Obtn un
Artculo tiene 50 bloques (log250=6), factor de bloques rbol optimizado posible
3 y un ndice primario sobre NomArt de 4 niveles.
Adems tiene un ndice secundario sobre la pareja de SELECT Artculo.NomArt
atributos Precio y Tamao (en ese orden) de 3 niveles, FROM Ingrediente, Art_Ingr, Artculo
s=7 y 27 nodos hoja. WHERE Ingrediente.NomIngr = Art_Ingr.NomIngr
Art_Ingr tiene 200 bloques (log2200=8), factor de AND Art_Ingr.NomArt = Artculo.NomArt
bloques 3 y un ndice secundario sobre NomIngr de 3 AND Ingrediente.Precio > 1000
niveles y s=3. AND NomArt=Pizza Marinera

Cul ser la forma ms apropiada de realizar cada una


de las siguientes operaciones: Artculo.NomArt
a) Artculo * Art_Ingr si se dispone de un mximo de Art_Ingr.NomArt= Artculo.NomArt
tres bferes
X
b) La misma operacin si se dispone de un mximo de
17 bferes Ingrediente.NomIngr=Art_Ingr.NomIngr NomArt=PizzaMarinera
c) NomArt=Pizza AND Tamao=familiar(Artculo)
X Artculo
Precio>1000 Art_Ingr

Ingrediente

A. Jaime 2005 DBD Tema 7 63 A. Jaime 2005 DBD Tema 7 64


Ejercicio: optimizacin por estimacin de Ejercicio: optimizacin por estimacin de
coste en la BD Festival de cine coste en la BD Mundial de Ftbol
Persona Nombre Sexo Nacionalidad
Jugador DNI Nombre FechaN Goles Cd_Equipo
Premio Categora Ao Euros CdPelcula
Equipo Cd_Equipo Pas Camiseta Total_Goles
Acta Nombre CdPelcula

El fichero Premio tiene las siguientes caractersticas: El fichero Jugador tiene las siguientes caractersticas:
1.000 registros y 50 bloques (log250=6). 1.000 registros y 40 bloques (log240=5).
ndice secundario sobre Ao de 3 niveles y el ndice primario sobre DNI de 2 niveles.
fichero contiene 50 aos distintos (s=1000/50). ndice secundario sobre Cd_Equipo de 3 niveles y
El fichero Persona tiene: SCd_Equipo=7.
10.000 registros y 500 bloques (log2500=9). El fichero Equipo tiene :
Un ndice secundario sobre Sexo de 2 niveles 10 bloques (log210=4) y factor de bloques 20.
El fichero Acta tiene: ndice secundario sobre el atributo no clave Pas de
100.000 registros y 300 bloques (log2300=9). 4 niveles y SPas= 3.
Un ndice secundario sobre CdPelcula y s=6.
Cul ser la forma ms apropiada de realizar cada una
Cul ser la forma ms apropiada de realizar cada una de las siguientes operaciones:
de las siguientes operaciones: a) DNI=123456789 and Cdigo_E= ITA (JUGADOR).
a) Euros>=500 and Ao= 2000 (Premio). b) Jugador* Equipo contando con un bfer para cada
b) Persona * Acta. fichero

A. Jaime 2005 DBD Tema 7 65 A. Jaime 2005 DBD Tema 7 66

Ejercicio: optimizacin por estimacin de


coste en la BD Autobuses universitarios
Alumno DNI Nombre Cd_Centro Cd_Pueblo
Curso DNI Id_Curso

El fichero Alumno tiene las siguientes caractersticas:


3.000 registros y factor de bloques 5 (log2600=10).
ndice primario sobre DNI de 2 niveles.
ndice secundario sobre Cd_Centro de 2 niveles,
s=100 y 10 bloques de hojas.
ndice secundario sobre Cd_Pueblo y DNI (en ese
orden) de 4 niveles y 300 bloques de hojas
El fichero Curso:
Tiene 6 registros y 3 bloques (log23=2).
Tiene a Id_Curso como campo de ordenacin
(fichero ordenado).

Cul ser la forma ms apropiada de realizar cada una


de las siguientes operaciones:
a) Alumno*Curso
b) DNI=123456789 and Cd_Centro> INF and Cod_Pueblo=Anguiano
(Alumno).

A. Jaime 2005 DBD Tema 7 67

También podría gustarte