Sei sulla pagina 1di 17

Tema 7.

Optimizacin (*)
Procesamiento y optimizacin de consultas
Elmasri/Navathe 02

Procesamiento y optimizacin de consultas


Proceso de una consulta

Consulta (SQL) Anlisis lxico y sintctico Validacin Forma intermedia Optimizador Optimizador Plan de ejecucin Generador de Cdigo Cdigo Procesador de BD Resultado
Modo compilado o interpretado Tiempo de ejecucin
Si hay error de ejecucin presenta el mensaje correspondiente

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 () Algoritmos y funciones de coste en reunin (|X|, *) Orden de ejecucin de las reuniones Ejemplos de optimizacin por estimacin de coste Otros algoritmos: , , , , X, agregacin, reunin
externa, combinacin de operaciones por segmentacin

Compilador rbol o grafo de consulta

Optimizacin en ORACLE (18.5) Optimizacin semntica (18.6)


(*) Se han fusionado los puntos 18.2 y 18.4 para evitar repetir conceptos.
A. Jaime 2005

No toma la estrategia ptima: Una razonablemente eficiente Elegir la ptima puede llevar mucho tiempo Consulta en lenguaje alto nivel (SQL): declarativa Especifica qu se desea obtener No detalla tanto cmo debe obtenerse Se puede plantear optimizacin automtica
DBD Tema 7 2

DBD Tema 7

A. Jaime 2005

Optimizacin
SGBD: cuenta con varios algoritmos para operaciones relacionales como seleccin () y reunin ( |X| ) Optimizador considera los algoritmos : Disponibles en el SGBD Aplicables al diseo fsico de los ficheros que participan en la consulta 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

Traduccin de consultas al lgebra relacional


Cada consulta SQL se divide en bloques de consulta: Unidades de traduccin al lgebra relacional
bloque de consulta 1
SELECT APELLIDO, NOMBRE

bloque de consulta 2

FROM EMPLEADO WHERE SALARIO > ( SELECT MAX(SALARIO) FROM EMPLEADO

APELLIDO, NOMBRE(SALARIO >C(EMPLEADO))


Elegir plan de consulta

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

Traduccin Traduccin allgebra lgebra al

WHERE NUMD=5);

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

Traduccin Traduccin allgebra lgebra al

Consulta anidada. Se estudian en la asignatura DBD

A. Jaime 2005

DBD Tema 7

A. Jaime 2005

DBD Tema 7

Optimizacin sintctica: Heurstica


Objetivo: reducir el tamao de las tablas intermedias Optimizador: En forma de Generada por rbol o de grafo el analizador sintctico Reglas heursticas: modifican la representacin interna de la consulta

rbol de consulta
Representa una expresin del lgebra relacional Una consulta se puede representar por varios rboles distintos
SELECT P.NMEROP, P.NMD, E.APELLIDO, E.DIRECCIN, E.FECHA_NCTO FROM PROYECTO AS P, DEPARTAMENTO AS D, EMPLEADO AS E WHERE P.NMD=D.NMEROD AND D.NSS_JEFE=E.NSS AND P.LOCALIZACIN=Stafford

Despus se genera un plan de ejecucin: Para ejecutar grupos de operaciones Segn los caminos de acceso que tengan los ficheros ndices, direccionamiento calculado Regla principal: Primero ejecutar seleccionar () y proyectar () Al final ejecutar reunir (||, *) y otras operaciones binarias

P.NMEROP, P.NMD, E.APELLIDO, E.DIRECCIN, E.FECHA_NCTO

|| P.NMD=DNMEROD

E D

P.LOCALIZACINP=Stafford
P

A. Jaime 2005

DBD Tema 7

A. Jaime 2005

DBD Tema 7

Orden de ejecucin
6

|| D.NSS_JEFE=E.NSS

rbol de consulta inicial o cannico


Lo genera el analizador sintctico de manera estndar Sin optimizar Primero los , luego condiciones de y ||. Por ltimo . Muy ineficiente (debido a los )

Optimizacin con rboles: ejemplo


Transformar el rbol en uno de ejecucin eficiente Basada en reglas de equivalencia (r.e.) entre expresiones del lgebra relacional Reglas heursticas: guan la aplicacin de las r.e. EJEMPLO:
Apellido de los empleados que trabajan en el proyecto Acuario nacidos despus de 1957

SELECT P.NMEROP, P.NMD, E.APELLIDO, E.DIRECCIN, E.FECHA_NCTO FROM PROYECTO AS P, DEPARTAMENTO AS D, EMPLEADO AS E WHERE P.NMD=D.NMEROD AND D.NSS_JEFE=E.NSS AND P.LOCALIZACIN=Stafford
P.NMEROP, P.NMD, E.APELLIDO, E.DIRECCIN, E.FECHA_NCTO D.NSS_JEFE=E.NSS Y P.NMD=DNMEROD Y P.LOCALIZACINP=Stafford

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


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

PROYECTO TRABAJA_EN

EMPLEADO E D
7

P
A. Jaime 2005

Los crean un fichero muy grande Slo se necesita usar la tupla del proyecto Acuario Slo reunir los empleados nacidos despus de 1957 Mejor primero los
A. Jaime 2005

DBD Tema 7

DBD Tema 7

Optimizacin con rboles: ejemplo (2)

Optimizacin con rboles: ejemplo (3)

NOMBREP=Acuario Y NMEROP=NMP
Y NSSE=NSS Y FECHA_NCTO>31-DIC-1957

APELLIDO

APELLIDO
1

NMEROP=NMP

NSSE=NSS NOMBREP=Acuario
PROYECTO TRABAJA_EN

EMPLEADO

Mejor primero los

FECHA_NCTO>31-DIC-1957
EMPLEADO

PROYECTO TRABAJA_EN

APELLIDO NMEROP=NMP

Mejor |

NSSE=NSS NOMBREP=Acuario FECHA_NCTO>31-DIC-1957


EMPLEADO

| que ms

Mejor primer con proyecto Acuario

APELLIDO NSSE=NSS

PROYECTO TRABAJA_EN

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


PROYECTO

EMPLEADO TRABAJA_EN

Mejor que el primer sea con el proyecto Acuario que slo obtiene una tupla (NOMBREP es clave)
A. Jaime 2005

DBD Tema 7

A. Jaime 2005

DBD Tema 7

10

Optimizacin con rboles: ejemplo (4)

Optimizacin con rboles: ejemplo (5)


3

APELLIDO NSSE=NSS

APELLIDO
||NSSE=NSS ||NMEROP=NMP

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


PROYECTO

EMPLEADO TRABAJA_EN

NOMBREP=Acuario
PROYECTO

FECHA_NCTO>31-DIC-1957
EMPLEADO

TRABAJA_EN

Mejor |

| que ms
4

APELLIDO
||NSSE=NSS ||NMEROP=NMP

NOMBREP=Acuario
PROYECTO

FECHA_NCTO>31-DIC-1957
EMPLEADO

NOMBREP=Acuario
PROYECTO

APELLIDO 5 ||NSSE=NSS NSSE NSS, APELLIDO ||NMEROP=NMP FECHA_NCTO>31-DIC-1957 NMEROP NSSE, NMP EMPLEADO
TRABAJA_EN

innecesarios para las operaciones que siguen

Mejor quitar atributos

TRABAJA_EN

Mejor eliminar atributos innecesarios

para las operaciones que siguen


DBD Tema 7

Mejor realizar a la vez todas las operaciones que necesiten una sola visita a los ficheros implicados
11
A. Jaime 2005

Ejemplo: subrbol de raz

NSSE

A. Jaime 2005

DBD Tema 7

12

Reglas de transformacin
El orden en que queden los atributos es indiferente: 1) Cascada de :

Reglas de transformacin (2)


7) y || (o ) conmutativas:
C slo atributos de L L(R ||C S) A1,...,An(R) ||C B1,...,Bm( S)
L=A1...An, B1...Bm los AiR, los BiS

c1 AND c2... AND cn(R) c1 (c2 (...(cn (R)...) c1 (c2 (R)) c2 (c1 (R)) lista1(lista2(R)) lista1(R) A1,...,An(C(R)) C(A1,...,An(R))
En C slo atributos de A1, ..., An

2) conmutativa: 3) Cascada de : 4) y conmutativas:

L(R ||C S) de L, se aade L final L( A1...An+k(R) ||C B1...Bm+p( S) )


8) e conmutativas ( no conmutativa): (R S) (S R) (R S) (S R) 9) ||, , e asociativas: (R S) T R (S T) 10) conmutativa con , y : C(R S) C(R) C(S) 11) y conmutativas: L(R S) L(R) L(S)
puede ser ||, , pero la misma en toda la expresin puede ser , pero la misma en toda la expresin

C con atributos NO

5) || conmutativa y conmutativa: R ||C S S ||C R RSSR 6) y || conmutativas:


En C slo atributos de R En C1 slo atributos de R,
en C2 slo atributos de S, C = C1 AND C2
A. Jaime 2005

C(R||S) C(R)||S C(R||S) C1(R)||C2(S)

12) Transformar condicin en otra equivalente (por ejemplo aplicando leyes de DeMorgan)
NOT (C1 AND C2) (NOT C1) OR (NOT C2) NOT (C1 OR C2) (NOT C1) AND (NOT C2)
A. Jaime 2005

DBD Tema 7

13

DBD Tema 7

14

Algoritmo de optimizacin heurstica


1) Regla 1: cascada de Descomponer C si C tiene ANDs en varias en cascada 2) Reglas 2, 4, 6 y 10: conmutativa con otras operaciones Mover las C lo ms abajo posible (lo que admitan los atributos de C) 3) Reglas 5 y 9: conmutatividad y asociatividad Recolocar las hojas para que los ms restrictivos se ejecuten antes (que producen una relacin con menos tuplas) 4) Regla 12: Combinar y en || 5) Reglas 3, 4, 7, 11: cascada y conmutacin de con otras operaciones Por cada lista descomponer lista y mover los sublista obtenidos lo ms abajo posible. Crear nuevas si es necesario. 6) Identificar grupos de operaciones que se puedan ejecutar con un solo algoritmo (es decir, con un solo recorrido a los ficheros implicados)

Conversin de los rboles en planes de ejecucin


Ejemplo:

NOMBRED=Investigacin
DEPARTAMENTO

NOMBREP,APELLIDO,DIRECCIN ||NMEROD=ND
EMPLEADO

Para convertir este rbol en plan de ejecucin: Elegir bsqueda en ndice para (suponemos que hay
un ndice en el fichero DEPARTAMENTO sobre el atributo NOMBRED)

Aplicacin de reunin por ciclo anidado para || (se estudia ms adelante) Explorar el resultado para aplicar Se distinguen dos formas de tratar los resultados intermedios o valoraciones: Materializada: supone almacenar en disco la tabla resultante de realizar la operacin Segmentado: Las tuplas resultado de la operacin se van depositando en un bfer de memoria y de all los va consumiendo la siguiente operacin (todo el proceso se realiza en memoria)
DBD Tema 7 16

A. Jaime 2005

DBD Tema 7

15

A. Jaime 2005

Algoritmos bsicos
Hay uno o varios por cada operacin del lgebra Algunos algoritmos exigen una organizacin de datos determinada (por ejemplo que haya ndice primario) Estudiaremos: Seleccin () Reunin (|X|, *) Otras: proyeccin () operaciones de conjuntos (,,,X) Operaciones de agregacin (MIN, MAX, CUENTA, PROMEDIO, SUMA) Empezamos por clasificacin (ordenacin) externa: Uno de los principales algoritmos Usado en: |X| y por el mtodo de clasificacin-fusin * e DISTINCT ( con eliminacin de duplicados)
ORDER BY

Clasificacin (ordenacin) externa


Ordena el fichero segn alguno de sus campos Mtodo comn estrategia clasificar-fusionar: Fase de clasificar: Ordenar los registros en cada bloque (en el bfer de memoria) 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 Seguir as hasta conseguir una nica serie Dicha serie contiene el fichero ordenado En la fase clasificar la unidad de ordenacin puede ser un grupo de n bloques (llamado run) Cuando en cada paso de fusin se fusionan las series dos a dos el nmero de bloques a transferir para ordenar ser: 2*b + 2*b *log2 b
En la etapa de clasificacin se leen y se escriben todos los bloques En cada paso de fusin se leen todos los bloques (b) y se escriben todos los bloques (otros b) se necesitan log2 b etapas de fusin

Son algoritmos adecuados para ordenar ficheros que NO entran en memoria principal.

A. Jaime 2005

DBD Tema 7

17

A. Jaime 2005

DBD Tema 7

18

Ejemplo de clasificacin externa: fusin binaria


Distribucin: 1 fichero de entrada y 2 de salida Fusin: 2 ficheros de entrada y 1 de salida

Optimizacin fsica: estimacin de coste

Fichero 95 110 50 36 10 100 153 40 120 60 70 130 22 80 140 original Clasificacin en cada bloque Distribucin 1 Fichero 1 50 95 110 40 120 153 22 80 140 Fichero 2 10 36 100 60 70 130

Objetivo: reducir el nmero de bloques transferidos Se basa en estimaciones de coste de las operaciones Busca la estrategia de menor coste (puede NO ser la
ptima)

=A1,A3,A5 =A2,A4

Es el enfoque ms apropiado para consultas compiladas En consultas interpretadas: conviene reducir el n de estrategias (puede llevar demasiado tiempo) Componentes del coste: Bloques transferidos: depende de las estructuras de acceso y de la colocacin de los bloques (contiguos, mismo cilindro, dispersos) Ficheros intermedios generados Cmputos en memoria sobre los ficheros intermedios: bsqueda, ordenacin, fusin, clculos Comunicacin: envo de la consulta y recepcin del resultado
Generalmente coste principal: se usa este BD grandes: bloques transferidos BD pequeas (entran en memoria): cmputos BD distribuidas: comunicacin

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 Fusin 3 Fichero 3 10 22 36 40 50 60 70 80 95 100 110 120 130 140 153
A. Jaime 2005

=C1 =C2

=(C1+C2) DBD Tema 7

Ordenado
19
A. Jaime 2005

DBD Tema 7

20

En el catlogo del SGBD: informacin para calcular el coste


Por cada fichero F de la BD se necesita guardar: r=n de registros (tuplas), b=n de bloques ( su fbl) Mtodo y atributo(s) de acceso primario. Adems si est (o no) ordenado y por qu atributo(s) Si tiene ndice primario (IP), de agrupacin (IA), direccionamiento calculado (DC) o ndices secundarios (IS), y sobre qu atributos Por cada ndice (IP, IA, IS): x=n de niveles y bi1=n de bloques del 1 nivel (hojas) Por cada atributo A del fichero F: d = n de valores diferentes del atributo en F sl = selectividad de una condicin A=valor(F): fraccin de registros (nmero entre 0 y 1) que satisface la condicin

Selectividad de una condicin Cardinalidad de seleccin


cardinalidad de seleccin, n medio de registros que satisface A=valor(F) (*)

N de registros

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
Ejemplo para un atributo clave: valores distintos en r registros d=r sl=1/r fraccin de registros obtenidos como resultado s=1 registro en el resultado Ejemplo para un atributo no clave: d= 50 valores distintos en 5000 registros
(distribuidos uniformemente)

s=cardinalidad de seleccin: n medio de registros que satisface A=valor(F) (vase a continuacin la relacin entre d, sl y s) Algunos datos pueden cambiar a menudo Se necesita informacin razonablemente actualizada
DBD Tema 7 21

sl=100/5000=1/50 fraccin de registros obtenidos como


resultado

s=5.000/50=100 registros en el resultado (de media)


(*) En otras palabras, la cardinalidad de seleccin s del atributo A en el fichero F es el n medio de repeticiones de un mismo valor de A en F

A. Jaime 2005

A. Jaime 2005

DBD Tema 7

22

Algoritmos y funciones de coste para seleccionar


Basadas en el nmero de bloques transferidos (CSi) S1: cualquier fichero, bsqueda lineal (fuerza bruta), cualquier condicin a) Todos los registros que satisfacen la condicin (no clave o desigualdad con clave): CS1a=b b) Uno que la satisfaga, por ejemplo igualdad con clave: CS1b=b/2
Por el campo de bsqueda

Algoritmos y funciones de coste para seleccionar (2)

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 Sobre el campo Sobre el campo

S2: fichero ordenado, bsqueda binaria (*), condicin de igualdad a) Sobre atributo clave: CS2a=log2 b b) sobre atributo NO clave: CS2b=log2 b + s/fbl - 1
S =cardinalidad de seleccin (n reg.)
No se ha tenido en cuenta el nivel adicional de indireccin en IS-nc

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

no se usa porque en BD no se suelen usar ficheros ordenados salvo si hay ndice primario

Tambin se puede aplicar a un intervalo

bi1/2 =mitad de bloques con hojas


(nivel 1 del ndice)

A. Jaime 2005

DBD Tema 7

23

A. Jaime 2005

DBD Tema 7

24

Tipos de fichero y algoritmos de seleccin


NOTA: por Resto de campos se entiende campos sobre los que no

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 considerar lo que se dice para este tipo de ndice

Ejemplo de fichero de montn


Bloque 1

Bloque 1

Adams, Robin Abbott, Diane Wright, Pam Adams, John Zimmer, Byron Akers, Jan ... Aaron, Ed Wyatt, Charles Acosta, Marc Algoritmos de seleccin: S1

Ejemplo de fichero ordenado Campo de ordenacin

hay definido ningn ndice secundario. Si lo hubiera considerar lo que se dice para este tipo de ndice

Aaron, Ed Abbott, Diane Acosta, Marc Adams, John Adams, Robin Akers, Jan ... Wright, Pam Wyatt, Charles Zimmer, Byron

Bloque 2

Bloque 2

Ejemplo de fichero con ndice primario Ejemplo de fichero con ndice de agrupacin Clave Campo de primaria agrupacin

5 9 9 16 28

2 5 8 9 15 16 24 28

1 1 1 3 3 7 7 9

Bloque n

Bloque n

1 7

3 7

Algoritmos de seleccin: Sobre campo de ordenacin: S1, S2a, S2b Resto de campos: S1
Ejemplo de fichero de direccionamiento calculado Campo de dir. calculado

340 460 580


0 1

Campo de dir. calculado

Algoritmos de seleccin: Sobre clave primaria: S1, S2a, S3a, S4 Resto de campos: S1 Algoritmos de seleccin: Sobre campo de dir. calculado: S1, S3b Resto de campos: S1

981 182

nulo

Algoritmos de seleccin: Sobre campo de agrupacin: S1, S2b, S4, S5 Resto de campos: S1

321 761 91
nulo

...

...
M-1

652

nulo

399 89 630
A. Jaime 2005

Tipos de fichero y algoritmos de seleccin (3)


NOTA: por Resto de campos se entiende campos sobre los que no hay definido ndice secundario, campo de ordenacin, de direccionamiento calculado, ndice primario ni secundario. Si lo hubiera considerar lo que se dice para cada caso Ejemplo de fichero con ndice secundario sobre campo clave Campo de 2 indexacin Ejemplo de fichero con ndice secundario sobre campo NO clave Campo de indexacin

...
5 5 2 5 9 8 9 24 9 15 15 16 24 24 28 8 28 15 16
A. Jaime 2005

DBD Tema 7

25

A. Jaime 2005

DBD Tema 7

26

Seleccin compleja (con varios atributos): condiciones conjuntivas, A B C ... (sin OR)
S7: ndice individual (o estructura)
Cualquier comparacin: =, >, <,

A1=valor1 A2=valor2 ...


Debe haber una estructura entre S2, S3, S4, S5 S6 (por ejemplo S3 para A1) Obtener registros para A1 (usando mtodo S3) Con cada registro obtenido: comprobar resto condicin (cuando el registro est en memoria)

...

3 7

... 1 7 3 7 ... 9

1 9 3 7 1 3

slo = S8: ndice compuesto (A1, A2) ( direccionamiento calculado compuesto)

A1=valor1 A2=valor2 ...

Usar directamente el mtodo asociado al ndice S9: Por interseccin de apuntadores a registro ndices secundarios en varios atributos de la condicin (o ndices con apuntador a registro y no a bloque) Para cada ndice: guardar en memoria los punteros que cumplen la condicin de los punteros en memoria Obtencin de los registros desde disco a partir de los punteros en memoria Para los atributos sin ndice: comprobar resto de condicin una vez se trae cada registro a memoria

...

Algoritmos de seleccin: Sobre clave secundaria: S1, S6a, S6c Resto de campos: S1

Algoritmos de seleccin: Sobre clave secundaria: S1, S6b, S6c Resto de campos: S1

DBD Tema 7

27

A. Jaime 2005

DBD Tema 7

28

Seleccin compleja (con varios atributos): condiciones disyuntivas (con OR)


Ejemplo ND=5 OR SEXO=M(EMPLEADO) Ms difciles de procesar y optimizar El resultado es la unin de los registros que cumplen cada subcondicin Si hay alguna subcondicin sin camino de acceso: fuerza bruta a toda la consulta Al final: aplicar para eliminar duplicados

Ejemplos de uso de coste en seleccionar


DATOS del fichero EMPLEADO:

rE=10.000 registros, bE=2.000 bloques


(fblE= rE/ bE=5 registros/bloque)

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

S1: CS1a=bE=2.000 (no clave) CS1b=bE/2=1.000 (clave)

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

Ejemplos de uso de coste en seleccionar (2)


3) ND=5: se puede usar S1a S6a CS6a= xND+sND = 2 + 80 = 82 (mejor que S1a)
Mejor aplicar el algoritmo S6a

Algoritmos para reunin considerando registros


De las que ms tiempo consumen Ms habitual: equirreunin y reunin natural


Reunin bidireccional: 2 ficheros. Multidireccional:ms de 2.

4) ND=5 AND SALARIO>30.000 AND SEXO=F: se puede aplicar el algoritmo S7 1 ND=5: CS6a= 82 1 SALARIO>30.000: CS4= xSALARIO + bE/2 =1.003 1 SEXO=M: CS6a= xSEXO+sSEXO = 1+5.000 = 5.001
Lo mejor es aplicar S7 de la siguiente forma: usar S6a para ND=5 y para cada registro obtenido comprobar el resto de la condicin en memoria (SALARIO >30.000 AND SEXO=F)

Aqu consideraremos este tipo de reunin: R |X|A=B S

Ahora se presentan los 4 algoritmos considerando slo registros. Despus se revisan considerando bloques.

R1: Bucle anidado (fuerza bruta)

5) ND=5 OR SALARIO>30.000 OR SEXO=F: condicin disyuntiva. La nica alternativa a la fuerza bruta es calcular cada subcondicin por separado y hacer la unin de los resultados: 82 + 1.003 + 2.000 + unin = 3.085 + unin
Lo mejor es aplicar directamente el algoritmo S1a y comprobar toda la condicin en cada registro

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

Por ejemplo, S tiene un ndice sobre el atributo B

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] Para cada s encontrada obtener tupla con r y s Fin

R |X|A=B S

A. Jaime 2005

DBD Tema 7

31

A. Jaime 2005

DBD Tema 7

32

Algoritmos para reunin considerando registros (2)


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

Ejemplo de ejecucin del algoritmo R1 considerando bloques


Paso 1 ciclo externo: DISCO DISCO Bloque Fichero R Bloque Fichero S
R1 S1 R1 R2
MEMORIA

R3 R4

R2

S2 S1, S2, S3, S4 S1-R1, S1-R2 S1-R3, S1-R4 S2-R1, S2-R2 S2-R3, S2-R4

R3

S3

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
DBD Tema 7 33

R4

S4

S3-R1, S3-R2 S3-R3, S3-R4 S4-R1, S4-R2 S4-R3, S4-R4

R5

R6

Paso 2 ciclo externo:


R5 R6
MEMORIA

R7

MEMORIA MEMORIA
Bferes para Bfer para fichero R fichero S Bfer para resultado

R7

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

A. Jaime 2005

DBD Tema 7

34

Frmulas para reunin: R1


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 fichero y otro para nB= 7 bferes obtener los bloques Conviene: del resultado Leer 5 bloques (nB-2) de un fichero Procesar el otro fichero en ciclo interno para esos bloques (usando uno de los bferes libres) Hacer lo mismo para los siguientes 5 bloques As hasta acabar

Ejemplo de ejecucin del algoritmo R2 considerando bloques

DISCO DISCO
Bloque Fichero 3 R1 5 6 9 R2 12 23 35 R3 36 41

MEMORIA MEMORIA
Bloque Bfer para fichero R

Fichero S
1 6 6 35 36
35 6 36 1

Bfer para fichero S S1 S2 Bfer para resultado

1) Usando EMPLEADO en ciclo exterior:


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:
R2 nada

Paso 3 sobre R:
R3 S2, S1

2) Usando DEPTO en ciclo exterior:


Ciclo interno Ciclo externo

R1 S2

bD+ bD/(nB-2) * bE = 4.010 accesos a bloque


R.6-S.6 Veces que se lee todo EMPLEADO N bferes nada R.35-S35 R.36-S.36

El otro bfer libre se usa para ir escribiendo el resultado Mejor el fichero con menos bloques en ciclo exterior
DBD Tema 7 35
A. Jaime 2005

A. Jaime 2005

DBD Tema 7

36

Frmulas para reunin: R2


Ejemplo:
rD= 50,
DEPTO |X|NSS_JEFE=NSS EMPLEADO
Rene cada departamento con 1 empleado

Frmulas para reunin: R3


Mtodo muy eficiente si estn ya ordenados por el atributo de reunin: Se lee una vez cada fichero Ejemplo: EMPLEADO |X|ND=NMD DPTO rD= 50, bD=10, rE= 5.000, bE=2.000 bD+ bE = 2.010 accesos a bloque Si hay que ordenarlos: 2*bE*(1+log2 bE) + 2*bD*(1+log2 bD) + bE + bD
Ordenar E Ordenar D Reunir por fusin

bD=10,

rE= 5.000,

bE=2.000

4.950 empleados sin reunir (rE- rD) IS-c(NSS_JEFE) en DEPTO con xNSS_JEFE=2 IS-c(NSS) en EMPLEADO con xNSS=4

1) Recorriendo EMPLEADO y usando IS-c(NSS_JEFE) de DEPTO:


Ciclo Bsqueda mediante IS-c (S6b)

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

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


Ciclo Bsqueda mediante IS-c (S6b)

bD+ rD * (xNSS+1) = 260 accesos a bloque

DISCO DISCO Bloque Fichero R Bloque Fichero S


R1 3 5 6 S1 1 6 35 36

Paso 1 sobre R:
R1 S1 R.6-S.6

Mejor la 2 opcin: mayor factor de seleccin de reunin Factor de seleccin de reunin: % de registros de un fichero que se reunirn Depende de la condicin de equirreunin En el ejemplo anterior:
EMPLEADO 50/5.000=0,01 DPTO 1

9 R2 12 23 35 R3 36 41

S2

Paso 2 sobre R:
R2 S2 nada

Paso 3 sobre R:
R3 S2 R.35-S.35 R.36-S.36
A. Jaime 2005

Mejor en el ciclo el fichero menor o el de mayor factor de seleccin de reunin


DBD Tema 7 37 DBD Tema 7

A. Jaime 2005

38

Frmulas para reunin: R4


Mtodo muy eficiente: se lee una vez cada fichero, estn o no ordenados Para el fichero ms pequeo Si cabe en memoria el fichero de direcc. calculado: Implementacin fcil bD+ bE = 2.010 accesos a bloque
DISCO DISCO
Bloque Fichero 3 R1 5 6 9 R2 12 23 35 R3 36 41

Frmulas para reunin: R4 (2) Reunin por dispersin partida


R |X|A=B S Se toma una funcin de dir. calculado que divida en M particiones y se aplicar a R.A y S.B Fase de particin: una iteracin por cada fichero Cada fichero se divide en M particiones (con la misma funcin de direccionamiento calculado) Las 2*M particiones se van colocando en disco Se utilizan M bferes (uno por particin)
Cuando se llena un bfer: escribir en disco (en su cubeta)

MEMORIA MEMORIA
Bfer para fichero R

Bloque Fichero S1 S2 36 1 35 6

S
Fichero S en memoria en fichero de dir. calculado 36 0
1 2 3 4

Paso inicial: volcar fichero ms pequeo a un fichero de dir. calculado en memoria

35 1 6

Bfer para resultado

Paso 1 sobre R:
R1

Paso 2 sobre R:
R2

Paso 3 sobre R:
R3

R.6-S.6

nada

R.35-S35 R.36-S.36

Si no cabe en memoria: Ms complejo. Se proponen variaciones para mejorar la eficiencia, como la reunin por dispersin partida y la reunin por dispersin hbrida
DBD Tema 7 39

Fase de prueba: M iteraciones En la iteracin i se renen las particiones Ri y Si Se necesitan tantos bferes como bloques haya en el menor entre Ri y Si ms dos bferes adicionales (uno para leer la particin del otro fichero y otro para el resultado) Hay 2 alternativas para hacer la reunin: 1) Ciclo anidado 2) Los bferes funcionan como fichero de dir. calculado, usando una funcin de dir. calculado diferente a la de la fase de particin Frmula: 3 * (bR+ bD)
leer, escribir en fichero de dir. calculado y leer de nuevo para, por fin, ir reuniendo

A. Jaime 2005

A. Jaime 2005

DBD Tema 7

40

Frmulas para reunin: R4 Reunin por dispersin hbrida


Parecido a la reunin por dispersin partida En la fase de particin: Se guarda en memoria la primera cubeta completa del primer fichero Se rene en memoria con la primera cubeta del segundo fichero En la fase de prueba: solo hacen falta M-1 iteraciones gracias al tratamiento en memoria de la primera cubeta de ambos ficheros.

Estimacin del tamao del resultado


R |X|A=B S Selectividad de reunin (sr): |R| = n tuplas de R sr = |R |X|A=B S| / |R r S| = |R |X|A=B S| / (|R| * |S|) multiplicacin 0 sr 1: sr=1 R r S (producto cartesiano) sr=0 0 tuplas satisfacen la condicin

Conocido un valor aproximado de sr: |R |X|A=B S| = sr *|R| * |S| N de registros 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


R |X|A=B S R1: bucle anidado (fuerza bruta) Ciclo exterior sobre R: CR1=bR + (bR*bS)
Lecturas Lecturas ciclo exterior ciclo interior

Ejemplo de uso de coste en reunin


EMPLEADO:

Con un solo bfer por fichero

rE=10.000 registros, bE=2.000 bloques ndice secundario NSS: xNSS=4, sNSS=1 (clave) secundario ND: xND=2, sND=80 rD=125 registros, bD=13 bloques ndice primario NMD: xNMD=1, sNSS=1 (clave) secundario NSS_JEFE: xNSS_JEFE=2, sNSS_JEFE=1 (clave)

Considerando el n de bferes, el ciclo interior sera:

DEPTO:

(bR*bS)/(n bferes-2) R2: bucle nico (estructura de acceso)


ciclo n niveles Cardinalidad seleccin

EMPLEADO |X|ND=NMD DEPTO

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


h1, nmero medio de accesos necesarios

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)
A. Jaime 2005

a) R1: EMPLEADO en ciclo exterior CR1=bE + (bE*bD) = 28.000 b) R1: DEPTO en ciclo exterior CR1=bD + (bE*bD) = 26.013 c) R2: EMPLEADO en ciclo CR2c=bE + rE*(xNMD+1) =22.000 d) R2: DEPTO en ciclo CR2a=bD + rD*(xND+sND) = 10.263

No calcularemos las dos opciones. Slo el ms pequeo en el ciclo exterior

No tiene por qu haber ndice sobre ambos atributos

Entre estas se escogera la ltima opcin 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 la mejor opcin Se obtiene dividiendo (bE*bD ) entre 13
DBD Tema 7 44

DBD Tema 7

43

A. Jaime 2005

Ejemplo de uso de coste en reunin (2)


e) R3: DEPTO ya esta ordenado, EMPLEADO no: CR3a-b= 2*bE*(1+log2 bE) + bE + bD 45.500 f) R4: si DEPTO entra en memoria: CR2c=bE + bD = 2.013 g) R4: si DEPTO NO entra en memoria CR2a 3*(bE + bD) = 6.039

Orden de ejecucin de las reuniones


La reunin es conmutativa y asociativa. Ello genera numerosas expresiones equivalentes cuando se renen ms de dos tablas en la misma expresin El clculo del coste de cada alternativa puede llevar un tiempo importante al optimizador
|X| |X| |X| R3 R2 R4

Considerando tambin estas, si DEPTO entra en memoria, R4 y R1 (con 15 bferes) son las mejores opciones (equivalentes) Si DEPTO NO entra en memoria, R4 es la mejor opcin Es mejor R2 con 15 bferes R1 con 15 bferes? Cul ser la mejor opcin si el ndice sobre el atributo ND de empleado fuese de agrupacin en lugar de secundario (con igual x y s)?

R1

Generalmente el estudio se reduce al rbol de profundidad a izquierdas (o el de prof. a derechas): rbol binario donde la rama derecha de cada nodo (salvo las hojas) corresponde a una relacin de base Se toma el rbol de menor coste estimado Una ventaja de este tipo de rbol es que acepta la segmentacin 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


DATOS tbl P r b atrib. d s estr. x bi1 2 4

Ejemplo de optimizacin basada en el coste (2)


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

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 50 2 50

SELECT P.NMEROP, P.NMD, E.APELLIDO FROM PROYECTO AS P, DEPARTAMENTO AS D, EMPLEADO AS E WHERE P.NMD=D.NMEROD AND D.NSS_JEFE=E.NSS AND P.LOCALIZACIN=Stafford

Optimizacin heurstica

P.NMEROP, P.NMD,
E.APELLIDO

|| D.NSS_JEFE=E.NSS || P.NMD=D.NMEROD P E P.LOCALIZACINP=Stafford D


Orden reuniones

Alternativas (a izdas):
1. 2. 3. 4.

P || D || E D || P || E D || E || P E || D || P


DBD Tema 7 47

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)

Algoritmos para funciones agregadas (MIN, MAX, COUNT, AVG, SUM) y agrupacin (GROUP BY)
SELECT MAX(Salario) FROM Empleado

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

Si hay ndice sobre Salario: Permite calcular MAX siguiendo los punteros derechos y MIN siguiendo los punteros izquierdos. Si es denso se puede calcular COUNT, AVG y SUM usando nicamente los valores del ndice Si NO es denso se puede usar para COUNT
(DISTINCT ...)

Si NO es denso el resto de operaciones se puede calcular usando slo el ndice si por cada entrada del ndice se almacena el n de registros con ese valor
SELECT ND, AVG(Salario) FROM Empleado GROUP BY ND 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


SELECT Apellido, NombreD FROM Empleado LEFT OUTER JOIN Departamento ON ND=NmeroD

Combinar operaciones mediante segmentacin


Sirve para reducir el nmero de ficheros temporales A medida que se obtienen las tuplas del resultado de una operacin se proporcionan como entrada para las operaciones posteriores Ejemplo: 2 selecciones + 1 reunin + 1 proyeccin En una pasada 2 selecciones y reunir Aplicarles proyeccin antes de escribir Todo en una pasada Sin haber creado ningn fichero temporal

Puede calcularse modificando cualquiera de los algoritmos vistos para reunin El ejemplo anterior se puede resolver modificando R1 (bucle anidado) de la siguiente manera: Recorrer Empleado en el bucle externo 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 RESULTADO TEMP1 TEMP3 asignar valor nulo como valor de 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)


1) Mtodo basado en reglas Se eligen planes de ejecucin basados en operaciones clasificadas heursticamente Tabla con 15 caminos de acceso clasificados por categoras (la ms baja corresponde al mtodo ms eficiente) Se est retirando en favor del mtodo siguiente 2) Mtodo basado en coste estimado Se examinan caminos de acceso y algoritmos alternativos para cada operador Se elige el plan con menor coste estimado: el objetivo es minimizar el tiempo necesario La informacin estadstica del catlogo se emplea de modo similar a lo descrito en este tema. El clculo del coste considera el uso de recursos: E/S, CPU y memoria. El desarrollador puede especificar pistas al optimizador: el primero puede tener ms informacin sobre los datos que el segundo Ejemplo de pista: IS-nc(Sexo) para EMPLEADO.
10.000 registros. El optimizador supondr que hay 5.000 hombres. El desarrollador sabe que solo hay 100 y conviene usar el IS-nc(Sexo)

Optimizacin semntica
Objetivo: simplificar la pregunta inicial Ejemplo:
SELECT FROM

Empleados que ganan ms que su supervisor


E.APELLIDO EMPLEADO AS E INNER JOIN EMPLEADO AS S ON E.NSS_SUPERV = S.NSS E.SALARIO > S.SALARIO

WHERE

Supongamos que existe la siguiente restriccin de integridad semntica: ningn empleado puede ganar ms que su supervisor directo No hace falta procesar la consulta anterior ya que no devolver ninguna tupla Esto puede ahorrar mucho tiempo cuando se puede comprobar las restricciones con eficiencia Una bsqueda entre muchas restricciones para ver cul es aplicable puede consumir mucho tiempo Con la inclusin de reglas activas a las BD (tambin llamadas disparadores o triggers) puede que se incorporen estas tcnicas a los SGBD del futuro
DBD Tema 7 54

Posibles pistas a indicar en una sentencia SQL:


Mtodo de optimizacin a usar Camino de acceso para una tabla accedida El orden de las reuniones Una operacin de reunin concreta
DBD Tema 7 53

A. Jaime 2005

A. Jaime 2005

Estimacin coste: frmulas seleccin


S1: Lineal a. Todos: b. Uno:

CS1a=b CS1b=b/2

Frmulas de estimacin de coste

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 S4: Varios registros . primario/. agrupacin (>,<, ) 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) + 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)

Ejercicios

A. Jaime 2005

DBD Tema 7

57

A. Jaime 2005

DBD Tema 7

58

Ejercicio: optimizacin por estimacin de coste en BD Empresa


Cul ser la forma ms conveniente de realizar las siguientes operaciones?
EMPLEADO:

Ejercicio: optimizacin heurstica en BD Empresa


Escribe los rboles cannico y optimizado correspondientes a las siguientes consultas: a)
SELECT NMEROP, NMD, APELLIDO, DIRECCIN, FECHA_NCTO FROM PROYECTO, DEPARTAMENTO, EMPLEADO WHERE NSS_JEFE=NSS AND NMD=NMEROD AND LOCALIZACINP=Stafford

rE=10.000 registros, bE=2.000 bloques ndice secundario NSS: xNSS=4, sNSS=1 (clave) secundario ND: xND=2, sND=80 rD=125 registros, bD=13 bloques ndice primario NMD: xNMD=1, sNMD=1 (clave) secundario NSS_JEFE: xNSS_JEFE=2, sNSS_JEFE=1 (clave)

DEPTO:

a) NMD>10 AND FECHA_NCTO>1957 AND NSS_JEFE=111 DEPTO b) EMPLEADO |X| NSS= NSS_JEFE DEPTO c) EMPLEADO |X|NSS_SUPERV=NSS EMPLEADO d) Qu cambia en a), b) y c) si se sustituye el ndice primario de DEPTO por un fichero de direccionamiento calculado sobre NMD e) Qu cambia en a), b) y c) si se sustituye el ndice primario de DEPTO por un ndice secundario sobre NMD (con x=2, bi1=25 y s=1), y en lugar de ndice secundario de DEPTO se tiene un fichero de direccionamiento calculado sobre NSS_JEFE.

b)
SELECT NOMBRED, APELLIDO, NOMBRE, NOMBREP FROM DEPARTAMENTO, EMPLEADO, TRABAJA_EN, PROYECTO WHERE NMEROD=ND AND NSS=NSSE AND NP=NMEROP

c)
SELECT NOMBRE, APELLIDO, 1.1*SALARIO FROM EMPLEADO, TRABAJA_EN, PROYECTO WHERE NSS=NSSE AND NP=NMEROP AND NOMBREP=ProductoX

A. Jaime 2005

DBD Tema 7

59

A. Jaime 2005

DBD Tema 7

60

Ejercicio: optimizacin por estimacin de coste en BD Mariposas


El fichero MARIPOSA tiene las siguientes caractersticas:

Ejercicio: optimizacin por estimacin de coste en BD viviendas


El fichero PERSONA tiene las siguientes caractersticas: r=250.000 registros y b =12.500 bloques. ndice primario sobre DNI: xDNI=4 niveles de rbol B+. bi1=63 bloques de hojas del rbol B+. ndice secundario sobre el par de atributos (NombreZona, NmCasa): X(NombreZona,NmCasa) = 6 niveles de rbol B+. s(NombreZona,NmCasa) = 5 registros satisfarn en promedio la condicin de igualdad bi1=130 bloques de hojas del rbol B+. Cul ser la forma ms apropiada de realizar cada una de las siguientes operaciones: a) DNI >=15.000.000 (PERSONA) b) DNI >=15.000.000 AND NombreZona=Ulia AND NmCasa=3 (PERSONA) c) P1 PERSONA P2 PERSONA P1 |X| P1.NombreZona = P2.NombreZona P2 si puede utilizarse un total mximo de 12 bferes

r=200.000 registros y fbl=10 (log220.000=15), ndice secundario sobre EsperanzaVida: xEsperanzaVida = 2 niveles del rbol B+ sEsperanzaVida = 200 registros tienen de promedio el mismo valor de EsperanzaVida bi1= 4 bloques de hojas del rbol B+ ndice secundario sobre Hbitat: xHbitat = 2 niveles del rbol B+ bi1= 4 bloques de hojas del rbol B+ sHbitat= 40 registros tienen de promedio el mismo valor de Hbitat

Cul ser la forma ms apropiada de realizar cada una de las siguientes operaciones: a) EsperanzaVida=1 (MARIPOSA) b) EsperanzaVida=1 AND Hbitat=hmedo (MARIPOSA) c) M1 MARIPOSA M2 MARIPOSA M1 |X| M1.EsperanzaVida = M2.EsperanzaVida M2 si puede utilizarse un total mximo de 102 bferes

A. Jaime 2005

DBD Tema 7

61

A. Jaime 2005

DBD Tema 7

62

Ejercicio: optimizacin por estimacin de coste en BD Comida rpida


Artculo NomArt Tipo Precio Tamao Art_Ingr NomArt NomIngr

Ejercicio: optimizacin heurstica en BD Comida rpida


A partir de la siguiente consulta SQL el optimizador llega, en un paso intermedio, al rbol de consulta que figura a continuacin. Obtn un rbol optimizado posible
SELECT Artculo.NomArt FROM Ingrediente, Art_Ingr, Artculo WHERE Ingrediente.NomIngr = Art_Ingr.NomIngr AND Art_Ingr.NomArt = Artculo.NomArt AND Ingrediente.Precio > 1000 AND NomArt=Pizza Marinera

Artculo tiene 50 bloques (log250=6), factor de bloques 3 y un ndice primario sobre NomArt de 4 niveles. Adems tiene un ndice secundario sobre la pareja de atributos Precio y Tamao (en ese orden) de 3 niveles, s=7 y 27 nodos hoja. Art_Ingr tiene 200 bloques (log2200=8), factor de bloques 3 y un ndice secundario sobre NomIngr de 3 niveles y s=3. Cul ser la forma ms apropiada de realizar cada una de las siguientes operaciones: a) Artculo * Art_Ingr si se dispone de un mximo de tres bferes b) La misma operacin si se dispone de un mximo de 17 bferes c) NomArt=Pizza AND Tamao=familiar(Artculo)

Art_Ingr.NomArt= Artculo.NomArt Ingrediente.NomIngr=Art_Ingr.NomIngr NomArt=PizzaMarinera Precio>1000


Ingrediente X Art_Ingr Artculo X

Artculo.NomArt

A. Jaime 2005

DBD Tema 7

63

A. Jaime 2005

DBD Tema 7

64

Ejercicio: optimizacin por estimacin de coste en la BD Festival de cine


Persona Nombre Sexo Nacionalidad Premio Categora Ao Euros CdPelcula Acta Nombre CdPelcula

Ejercicio: optimizacin por estimacin de coste en la BD Mundial de Ftbol


Jugador DNI Nombre FechaN Goles Cd_Equipo Equipo Cd_Equipo Pas Camiseta Total_Goles

El fichero Premio tiene las siguientes caractersticas: 1.000 registros y 50 bloques (log250=6). ndice secundario sobre Ao de 3 niveles y el fichero contiene 50 aos distintos (s=1000/50). El fichero Persona tiene: 10.000 registros y 500 bloques (log2500=9). Un ndice secundario sobre Sexo de 2 niveles El fichero Acta tiene: 100.000 registros y 300 bloques (log2300=9). Un ndice secundario sobre CdPelcula y s=6. Cul ser la forma ms apropiada de realizar cada una de las siguientes operaciones: a) Euros>=500 and Ao= 2000 (Premio). b) Persona * Acta.

El fichero Jugador tiene las siguientes caractersticas: 1.000 registros y 40 bloques (log240=5). ndice primario sobre DNI de 2 niveles. ndice secundario sobre Cd_Equipo de 3 niveles y SCd_Equipo=7. El fichero Equipo tiene : 10 bloques (log210=4) y factor de bloques 20. ndice secundario sobre el atributo no clave Pas de 4 niveles y SPas= 3. Cul ser la forma ms apropiada de realizar cada una de las siguientes operaciones: a) DNI=123456789 and Cdigo_E= ITA (JUGADOR). b) Jugador* Equipo contando con un bfer para cada 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

Potrebbero piacerti anche