Está en la página 1de 17

Procesamiento y optimizacin de consultas

Tema 7. Optimizacin (*)


Procesamiento y optimizacin de consultas

Proceso de una consulta

Elmasri/Navathe 02

Consulta (SQL)

Introduccin
Traduccin de consultas SQL a lgebra relacional (18.1)
Optimizacin sintctica: Heurstica (18.3)
rbol de consulta
Reglas de transformacin
Algoritmo de optimizacin
Optimizacin fsica: Estimacin de coste (18.2, 18.4)
Algoritmos bsicos y clasificacin externa
Componentes del coste. Informacin del catlogo
Algoritmos y funciones de coste en seleccionar ()

(*) Se han fusionado los puntos 18.2 y 18.4 para evitar


repetir conceptos.

Cdigo

Modo compilado
o interpretado

Procesador de BD

Tiempo de ejecucin

Resultado

Si hay error de ejecucin


presenta el mensaje
correspondiente

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

A. Jaime 2005

DBD Tema 7

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

Cada consulta SQL se divide en bloques de consulta:


Unidades de traduccin al lgebra relacional
bloque de
consulta 1
SELECT APELLIDO, NOMBRE

Traduccin de consultas al lgebra


relacional

Optimizacin

rbol o grafo
de consulta

Generador de Cdigo

Optimizacin en ORACLE (18.5)


Optimizacin semntica (18.6)

Forma intermedia

Plan de ejecucin

externa, combinacin de operaciones por segmentacin

DBD Tema 7

Compilador

Optimizador
Optimizador

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

A. Jaime 2005

Anlisis lxico y sintctico


Validacin

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

Traduccin
Traduccin
lgebra
alallgebra

WHERE NUMD=5);

APELLIDO, NOMBRE(SALARIO >C(EMPLEADO))


Elegir plan de consulta

Traduccin
Traduccin
lgebra
alallgebra

Tcnicas de optimizacin:
Fsica o estimacin de coste:
Elegir el plan de menor coste estimado
Sintctica o reglas heursticas
Ordenar las operaciones
Utiliza un rbol o un grafo de consultas
Semntica
Generalmente se combinan las dos primeras tcnicas

bloque de
consulta 2

Consulta
anidada.
Se estudian en la
asignatura DBD

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

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

A. Jaime 2005

DBD Tema 7

A. Jaime 2005

DBD Tema 7

Optimizacin sintctica: Heurstica

rbol de consulta

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

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

Representa una expresin del lgebra relacional


Una consulta se puede representar por varios
rboles distintos

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

Regla principal:
Primero ejecutar seleccionar () y proyectar ()

|| D.NSS_JEFE=E.NSS

Al final ejecutar reunir (||, *) y otras operaciones


binarias

|| P.NMD=DNMEROD

P.LOCALIZACINP=Stafford

Orden de ejecucin

A. Jaime 2005

DBD Tema 7

A. Jaime 2005

rbol de consulta inicial o cannico

Lo genera el analizador sintctico de manera estndar


Sin optimizar

Primero los , luego condiciones de y ||. Por ltimo


.

DBD Tema 7

Optimizacin con rboles: ejemplo

Muy ineficiente (debido a los )

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

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 APELLIDO
FROM EMPLEADO, TRABAJA_EN, PROYECTO
WHERE NOMBREP=Acuario AND NMEROP=NMP
AND NSSE=NSS AND FECHA_NCTO>31-DIC-1957

APELLIDO
NOMBREP=Acuario Y NMEROP=NMP

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

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

D.NSS_JEFE=E.NSS Y
P.NMD=DNMEROD Y
P.LOCALIZACINP=Stafford

EMPLEADO

PROYECTO
TRABAJA_EN

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

A. Jaime 2005

DBD Tema 7

Optimizacin con rboles: ejemplo (2)

APELLIDO

NOMBREP=Acuario Y NMEROP=NMP

Optimizacin con rboles: ejemplo (3)

APELLIDO

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

NSSE=NSS NOMBREP=Acuario

PROYECTO

EMPLEADO

FECHA_NCTO>31-DIC-1957

TRABAJA_EN

Mejor primero los

APELLIDO
NMEROP=NMP

FECHA_NCTO>31-DIC-1957

Mejor primer con


proyecto Acuario

| que
ms

Mejor |

APELLIDO
NSSE=NSS

NMEROP=NMP FECHA_NCTO>31-DIC-1957

TRABAJA_EN

NOMBREP=Acuario

EMPLEADO

A. Jaime 2005

Optimizacin con rboles: ejemplo (4)

DBD Tema 7

EMPLEADO

||NMEROP=NMP

NOMBREP=Acuario
PROYECTO

TRABAJA_EN

FECHA_NCTO>31-DIC-1957
EMPLEADO

TRABAJA_EN
Mejor quitar atributos

innecesarios para las


operaciones que siguen

| que
ms

Mejor |

APELLIDO

||NSSE=NSS
||NMEROP=NMP

PROYECTO

FECHA_NCTO>31-DIC-1957
EMPLEADO

NOMBREP=Acuario

TRABAJA_EN

Mejor realizar a la vez todas las


operaciones que necesiten una sola
visita a los ficheros implicados

para las operaciones que siguen


DBD Tema 7

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

TRABAJA_EN

Mejor eliminar atributos innecesarios

A. Jaime 2005

||NSSE=NSS

PROYECTO

NOMBREP=Acuario

10

APELLIDO

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

TRABAJA_EN

Optimizacin con rboles: ejemplo (5)

EMPLEADO

PROYECTO

Mejor que el primer sea con el proyecto


Acuario que slo obtiene una tupla
(NOMBREP es clave)

APELLIDO
NSSE=NSS

PROYECTO

DBD Tema 7

TRABAJA_EN

NSSE=NSS NOMBREP=Acuario

PROYECTO

EMPLEADO

A. Jaime 2005

NMEROP=NMP

11

A. Jaime 2005

DBD Tema 7

Ejemplo:
subrbol de raz

NSSE

12

Reglas de transformacin

Reglas de transformacin (2)


7) y || (o ) conmutativas:

El orden en que queden los atributos es indiferente:


1) Cascada de :

C slo atributos de L
L(R ||C S)
A1,...,An(R) ||C B1,...,Bm( S)

c1 AND c2... AND cn(R)


c1 (c2 (...(cn (R)...)

2) conmutativa:

C con atributos NO

lista1(lista2(R)) lista1(R)

4) y conmutativas:

A1,...,An(C(R))
C(A1,...,An(R))

10) conmutativa con , y :


C(R S) C(R) C(S)

5) || conmutativa y conmutativa:
R ||C S S ||C R
RSSR
6) y || conmutativas:
En C1 slo atributos de R,

8) e conmutativas ( no conmutativa):
(R S) (S R)
(R S) (S R)
9) ||, , e asociativas:
(R S) T R (S T)

En C slo atributos de
A1, ..., An

En C slo atributos de R

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

c1 (c2 (R)) c2 (c1 (R))

3) Cascada de :

11) y conmutativas:
L(R S) L(R) L(S)

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

DBD Tema 7

13

Algoritmo de optimizacin heurstica

puede ser
||, ,
pero la misma en
toda la expresin
puede ser
,
pero la misma en
toda la expresin

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)

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

L=A1...An, B1...Bm
los AiR, los BiS

A. Jaime 2005

DBD Tema 7

14

Conversin de los rboles en planes de ejecucin

1) Regla 1: cascada de
Descomponer C si C tiene ANDs en varias en cascada

Ejemplo:

NOMBREP,APELLIDO,DIRECCIN
||NMEROD=ND

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)

NOMBRED=Investigacin

EMPLEADO

DEPARTAMENTO

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)

un ndice en el fichero DEPARTAMENTO sobre el atributo


NOMBRED)

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)

A. Jaime 2005

DBD Tema 7

15

Para convertir este rbol en plan de ejecucin:


Elegir bsqueda en ndice para (suponemos que hay

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)

A. Jaime 2005

DBD Tema 7

16

Algoritmos bsicos

Clasificacin (ordenacin) externa

Hay uno o varios por cada operacin del lgebra


Algunos algoritmos exigen una organizacin de datos
determinada (por ejemplo que haya ndice primario)

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)

Estudiaremos:
Seleccin ()
Reunin (|X|, *)
Otras:
proyeccin ()
operaciones de conjuntos (,,,X)
Operaciones de agregacin (MIN, MAX,
CUENTA, PROMEDIO, SUMA)

Fase de fusionar:
Fusionar 2 a 2 los bloques ordenados para formar
series de 2 bloques ordenados
Fusionar 2 a 2 las series anteriores para formar
series de 4 bloques ordenados

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)

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:

ORDER BY

Son algoritmos adecuados para ordenar ficheros


que NO entran en memoria principal.

A. Jaime 2005

DBD Tema 7

17

2*b + 2*b *log2 b


En la etapa de
clasificacin se
leen y se
escriben todos
los bloques

A. Jaime 2005

Ejemplo de clasificacin externa: fusin binaria

Distribucin: 1 fichero de entrada y 2 de salida


Fusin: 2 ficheros de entrada y 1 de salida

Fichero 95 110 50 36 10 100 153 40 120 60 70 130 22 80 140


original

=A1,A3,A5
=A2,A4

Fusin 1
Ficheros 1 y 2 vacos
Fichero 3 10 36 50 95 100 110 40 60 70 120 130 153
22 80 140
= (A1+A2), (A3+A4), (A5+)
Distribucin 2
Fichero 1 10 36 50 95 100 110 22 80 140
=B1,B3
=B2
Fichero 2 40 60 70 120 130 153
Fusin 2
Ficheros 1 y 2 vacos
Fichero 3 10 36 40 50 60 70 95 100 110 120 130 153
22 80 140
= (B1+B2), (B3+)
Distribucin 3
Fichero 1 10 36 40 50 60 70 95 100 110 120 130 153
Fichero 2 22 80 140

=C1
=C2

Fusin 3
Fichero 3 10 22 36 40 50 60 70 80 95 100 110 120
=(C1+C2)
DBD Tema 7

DBD Tema 7

18

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)

Distribucin 1
Fichero 1 50 95 110 40 120 153 22 80 140
Fichero 2 10 36 100 60 70 130

130 140 153

se necesitan log2 b
etapas de fusin

Optimizacin fsica: estimacin de coste

Clasificacin en cada bloque

A. Jaime 2005

En cada paso de fusin


se leen todos los
bloques (b) y se
escriben todos los
bloques (otros b)

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

Ordenado
19

A. Jaime 2005

DBD Tema 7

20

En el catlogo del SGBD:


informacin para calcular el coste

Selectividad de una condicin


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

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:

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

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

N de
registros

(distribuidos uniformemente)

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

s=cardinalidad de seleccin: n medio de registros


que satisface A=valor(F)

resultado

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

(vase a continuacin la relacin entre d, sl y s)

Algunos datos pueden cambiar a menudo

Se necesita informacin razonablemente actualizada

A. Jaime 2005

DBD Tema 7

(*) 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

21

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

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

A. Jaime 2005

DBD Tema 7

23

No se ha tenido en cuenta el nivel


adicional de indireccin en IS-nc

S =cardinalidad de seleccin (n reg.)

Sobre el campo

de bsqueda
S4: ndice primario o de agrupacin,
desigualdad, lectura de varios registros
Condicin con >, <, si aprox. r/2
registros satisfacen la condicin:
b/2=la mitad de los bloques
CS4= x + b/2
Puede ser muy inexacta
Tambin se puede
en casos concretos
aplicar a un intervalo: 30.000 SALARIO 35.000

Sobre el campo
S5: ndice de agrupacin,
de bsqueda
igualdad, lectura de varios registros
Condicin de igualdad:
s = cardinalidad de seleccin. N reg
CS5= x+s/fbl

de bsqueda
S6: ndice secundario (B+)
a) Condicin de igualdad con no clave:
CS6a= x + s (cada registro en un bloque distinto)
b) Condicin de igualdad con clave
CS6b= x + 1
c) Condicin con >, <, si aprox. r/2
satisfacen la condicin
r/2= mitad de los registros
CS6c= x + (bi1/2) + (r/2)
a travs del ndice

Por el campo de
bsqueda

22

Algoritmos y funciones de coste


para seleccionar (2)

DBD Tema 7

Sobre el campo

Tambin se puede
aplicar a un intervalo

A. Jaime 2005

bi1/2 =mitad de bloques con hojas

DBD Tema 7

(nivel 1 del ndice)

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


considerar lo que se dice para este tipo de ndice

Bloque 1

Adams, John
Adams, Robin
Akers, Jan
Wright, Pam
Wyatt, Charles
Zimmer, Byron

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

5
9

...

Bloque 2

Aaron, Ed
Wyatt, Charles
Acosta, Marc

Aaron, Ed
Abbott, Diane
Acosta, Marc

Bloque n

Bloque 1
Bloque 2

Adams, John
Zimmer, Byron
Akers, Jan

hay definido ningn ndice secundario. Si lo hubiera


considerar lo que se dice para este tipo de ndice

Ejemplo de fichero ordenado


Campo de ordenacin

...

Adams, Robin
Abbott, Diane
Wright, Pam

Bloque n

Ejemplo de fichero de montn

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

9
16

Algoritmos de seleccin: S1

28

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

...

Campo de dir.
calculado

321
761
91

182

981

nulo

...

M-1

1
1
1
3
3
7
7
9

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

Algoritmos de
seleccin:
Sobre campo de dir.
calculado: S1, S3b
Resto de campos: S1

nulo

652

8
9
15
16
24
28

Algoritmos de seleccin:
Sobre clave primaria:
S1, S2a, S3a, S4
Resto de campos: S1

...

340
460
580

2
5

nulo

399
89
630
A. Jaime 2005

DBD Tema 7

25

A. Jaime 2005

Ejemplo de fichero con ndice secundario


sobre campo clave
Campo de
2 indexacin

24
9

15
15

...

3
7

...

1
9

...

3
7

...

1
3

9
15
16

16

28

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)

DBD Tema 7

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

Usar directamente el mtodo asociado al ndice

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

A. Jaime 2005

Cualquier comparacin:
=, >, <,

A1=valor1 A2=valor2 ...

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

8
28

S7: ndice individual


(o estructura)

A1=valor1 A2=valor2 ...

24
24

Ejemplo de fichero con ndice secundario


sobre campo NO clave
Campo de
indexacin

5
2

26

Seleccin compleja (con varios atributos):


condiciones conjuntivas, A B C ... (sin OR)

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

DBD Tema 7

27

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

A. Jaime 2005

DBD Tema 7

28

Seleccin compleja (con varios atributos):


condiciones disyuntivas (con OR)

Ejemplos de uso de coste en seleccionar


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


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

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

Mejor aplicar el algoritmo S6a

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)

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

De las que ms tiempo consumen


Ms habitual: equirreunin y reunin natural

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

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)

R |X|A=B S

DBD Tema 7

31

R |X|A=B S

Para cada rR
Para cada sS
Si r[A]=s[B] obtener tupla con r y s
Fin

Por ejemplo, S tiene un


ndice sobre el atributo B

R2: Bucle nico (estructura de acceso)

R |X|A=B S

A. Jaime 2005

30

Algoritmos para reunin


considerando registros

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)

DBD Tema 7

R |X|A=B S

Para cada rR
acceder con la estructura a S y encontrar
las tuplas con s[B]=r[A]
Para cada s encontrada obtener tupla con r y s
Fin

A. Jaime 2005

DBD Tema 7

32

Algoritmos para reunin


considerando registros (2)

Ejemplo de ejecucin del algoritmo R1


considerando bloques

R |X|A=B S
R3: Clasificacin-fusin
Ordenar ficheros desordenados (R por A, S por B)
Recorrer R y S a la vez encontrando registros
coincidentes
Una visita por registro
Si A y B no clave: modificacin del algoritmo
Tambin usando ndice secundario:
Ineficiente por cada registro acceso a 1 bloque
diferente

R |X|A=B S
R4: Con direccionamiento calculado
1) Fase de particin:
Tomar el fichero con menos registros (ej. R)
Crear un fichero de dir. calculado vaco R
Recorrer R:
Insertar sus registros en R
Campo A como clave de dir. calculado
2) Fase de prueba: (algoritmo R2 sobre R)
Recorrer S:
Aplicar funcin de dir. calculado (la misma
usada para R) al valor del campo B
Obtener las tuplas reunin donde coincidan el
valor de S[B] y R[A]
En esta versin simplificada del algoritmo se
supone que R entra en memoria

A. Jaime 2005

DBD Tema 7

33

Paso 1 ciclo externo:


DISCO
DISCO
Bloque Fichero R Bloque Fichero S
R1

S1

R2

S2

R1
R2
MEMORIA

R3
R4
S1, S2,
S3, S4

R3

S3

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

R4

S4

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

R5

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

R6

Paso 2 ciclo externo:


R5

R7

R6

Bferes para Bfer para


fichero R
fichero S

MEMORIA

R7

MEMORIA
MEMORIA
Bfer para
resultado

S1, S2,
S3, S4

S1-R5, S1-R6
S1-R7
S2-R5, S2-R6
S2-R7
S3-R5, S3-R6
S3-R7
S4-R5, S4-R6
S4-R7

A. Jaime 2005

DBD Tema 7

34

Ejemplo de ejecucin del algoritmo R2


considerando bloques

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

Bloque Fichero
3
R1 5
6

Fichero S

9
R2 12
23

Bloque

Bfer para fichero R

1
Bfer para fichero S

36
1

S1

35

35
6

S2

35
R3 36
41

1) Usando EMPLEADO en ciclo exterior:

MEMORIA
MEMORIA

DISCO
DISCO

Bfer para resultado

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:

R1

2) Usando DEPTO en ciclo exterior:

S2

Paso 3 sobre R:

R2

R3
S2,
S1

nada

Ciclo interno
Ciclo externo

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


R.6-S.6
Veces que se lee todo EMPLEADO

nada

N bferes

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

A. Jaime 2005

DBD Tema 7

35

A. Jaime 2005

DBD Tema 7

36

Frmulas para reunin: R2


Ejemplo:

DEPTO |X|NSS_JEFE=NSS EMPLEADO

rD= 50,

bD=10,

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

rE= 5.000,

Frmulas para reunin: R3


Rene cada
departamento
con 1
empleado

bE=2.000

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

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


DEPTO:

Ordenar E

Bsqueda mediante IS-c (S6b)

Ciclo

Ordenar D

Reunir por fusin

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

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


DISCO
DISCO
Bloque Fichero R Bloque Fichero S

Bsqueda mediante IS-c (S6b)

Ciclo

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

3
5
6

S1

1
6

9
R2 12
23

S2

35
36

R1

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:

R2

S2
nada

Paso 3 sobre R:
R3

DBD Tema 7

37

S2
R.35-S.35
R.36-S.36

A. Jaime 2005

Bloque Fichero
3
R1 5
6
9
R2 12
23

36
1

S2

35
6

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

35
1
6

Bfer para resultado

Paso 2 sobre R:

Paso 3 sobre R:

R1

R2

R3

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

A. Jaime 2005

DBD Tema 7

39

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)

Paso 1 sobre R:

R.6-S.6

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

35
R3 36
41

MEMORIA
MEMORIA

S1

38

R |X|A=B S

Bfer para fichero R

Bloque Fichero

DBD Tema 7

Frmulas para reunin: R4 (2)


Reunin por dispersin partida

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

Paso 2 sobre R:

35
R3 36
41

Frmulas para reunin: R4

S1

Mejor en el ciclo el fichero menor o el de mayor


factor de seleccin de reunin

A. Jaime 2005

R1

R.6-S.6

EMPLEADO 50/5.000=0,01
DPTO 1

Paso 1 sobre R:

Cuando se llena un bfer: escribir en disco (en su cubeta)

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

DBD Tema 7

40

Frmulas para reunin: R4


Reunin por dispersin hbrida

Estimacin del tamao del resultado

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.

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

Funciones de coste para reunin

R1: bucle anidado (fuerza bruta)


Ciclo exterior sobre R:
CR1=bR + (bR*bS)
Lecturas
Lecturas
ciclo exterior ciclo interior

Con un solo bfer


por fichero

Considerando el n de bferes, el
ciclo interior sera:

. secundario:
. agrupacin:
. primario:
Dir. calculado:

CR2a= bR + (|R|*(xB+sB))
CR2b= bR + (|R|*(xB+(sB/fblB))
CR2c= bR + (|R|*(xB+1))
CR2d= bR + (|R|*h)

R3: clasificacin-fusin
Slo si hay que
Fich. ya ordenados:CR3a= bR + bS
ordenar R
Ordenacin previa: CR3b= 2*bR*(1+log2bR) +
2*bS*(1+log2bS) +
Slo si hay que
b R + bS
ordenar S
R4: direccionamiento calculado (dispersin partida)
Fich. entra en memoria: CR4a= bR + bS
NO entra en memoria: CR4b= 3*(bR + bS)
DBD Tema 7

DEPTO:

rD=125 registros, bD=13 bloques


ndice primario NMD: xNMD=1, sNSS=1 (clave)
secundario NSS_JEFE: xNSS_JEFE=2, sNSS_JEFE=1 (clave)

Cardinalidad seleccin

h1, nmero medio de


accesos necesarios

A. Jaime 2005

rE=10.000 registros, bE=2.000 bloques


ndice secundario NSS: xNSS=4, sNSS=1 (clave)
secundario ND: xND=2, sND=80

EMPLEADO |X|ND=NMD DEPTO

R2: bucle nico (estructura de acceso)


ciclo n niveles

EMPLEADO:

(bR*bS)/(n bferes-2)

42

Ejemplo de uso de coste en reunin

R |X|A=B S

DBD Tema 7

43

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

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:


CR3a-b= 2*bE*(1+log2 bE) + bE + bD 45.500

f) R4: si DEPTO entra en memoria:


CR2c=bE + bD = 2.013

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|

g) R4: si DEPTO NO entra en memoria


CR2a 3*(bE + bD) = 6.039
|X|

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

R1

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

A. Jaime 2005

DBD Tema 7

DATOS
r

atrib.

s estr. x bi1

Localiz.P 200 10 IS
2.000 100 NmeroP 2.000 1
NmD
50 40
NmeroD 50 1
D
50
5
NSS_Jefe 50 1
NSS 10.000 1 IS
E 10.000 2.000
ND
50 200
Salario 500 20 IS

2 4

2 50
2 50

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

Alternativas
(a izdas):

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

P.LOCALIZACINP=Stafford D

Orden
reuniones

1.
2.
3.
4.

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

A. Jaime 2005

DBD Tema 7

47

R2

DBD Tema 7

46

Ejemplo de optimizacin basada en el coste (2)

R3

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

45

Ejemplo de optimizacin basada en el coste

tbl

R4

|X|

P.LOCALIZACINP=Stafford(P)
CS1a: bP=100
CS6a: x+s =2+10=12Mejor S6a
Resultado 10 (s) registros. Entran en 1 bloque (fblP=20)
Materializado: en TEMP1 (r=10, b=1)
Supuesto que se
Orden reuniones. Estudio de la alternativa 1:
renen todos los
registros de TEMP1
TEMP1|| P.NMD=D.NMEROD D
y que fblT1D=5
CR1: bT1+(bT1*bD)+bres.=1+(1*5)+10/5 = 8
CR3: 2*bT1*(1+log2 bT1)+2*bD* (1+log2 bD)+bT1+bD+bres=
2*1*(1+0)+2*5(1+3)+1+5+10/5=50
CR4: bT1+bD+ bres .= 1+5+10/5 = 8
Mejor R1 R4
Materializado: en TEMP2 (r=10, b=2) Supuesto que se
renen todos los
TEMP2 || D.NSS_JEFE=E.NSS E
registros de TEMP2
y que fblT1D=5
CR1: bT2+(bT2*bE)+ bres.= 2+(2*2.000)+10/5.= 4.004
CR2: bT2+(rT2*(x+1))+ bres.= 2+(10*(2+1))+10/5= 34
CR3: 2*bT2*(1+log2 bT2)+2*bE* (1+log2 bE)+bT2+bE+bres=
2*2*(1+1)+2*2.000*(1+11)+2+2.000+10/5= 50.010
CR4: bT2+bE+ bres .= 2+2.000+10/5 = 2.004
Mejor R2
Supuesto que se hace segmentado, la alternativa 1
precisa: 12+1+8+34=56 transferencias de bloque
Orden reuniones. Estudio de las alternativas 2, 3 y 4 (ejercicio)
Se elige el orden de reuniones de menor coste total
A. Jaime 2005

DBD Tema 7

48

Algoritmos para funciones agregadas (MIN, MAX,


COUNT, AVG, SUM) y agrupacin (GROUP BY)

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

SELECT MAX(Salario) FROM Empleado

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

est no se inserta)

Operaciones de conjuntos: , , , X
Pueden ser costosas
X muy costosa: sustituir por operaciones equivalentes
, , son compatibles con la unin:
Se emplean variaciones de clasificacin-fusin
(R3)
Ordenacin de los 2 ficheros (segn mismos atributos)
Para la fusin basta una pasada
Ms fcil ordenando atributos clave nicos
Tambin usando direccionamiento calculado

(DISTINCT ...)

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

Algoritmos para la reunin externa

A. Jaime 2005

DBD Tema 7

50

Combinar operaciones mediante segmentacin

SELECT Apellido, NombreD


FROM Empleado LEFT OUTER JOIN Departamento
ON ND=NmeroD

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:

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

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)

Optimizacin semntica

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)

Objetivo: simplificar la pregunta inicial

Ejemplo:
SELECT
FROM

WHERE

No hace falta procesar la consulta anterior


ya que no devolver ninguna tupla

A. Jaime 2005

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

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

Supongamos que existe la siguiente restriccin de


integridad semntica:
ningn empleado puede ganar ms que su
supervisor directo

Posibles pistas a indicar en una sentencia SQL:

Empleados que ganan


ms que su supervisor

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

A. Jaime 2005

DBD Tema 7

54

Estimacin coste: frmulas seleccin

Frmulas
de
estimacin
de coste

A. Jaime 2005

DBD Tema 7

55

S1: Lineal
a. Todos:
b. Uno:

CS1a=b
CS1b=b/2

S2: Binaria
a. (=) clave:
CS2a=log2 b
b. (=) no clave: CS2b=log2 b + s/fbl - 1

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

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

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)

A. Jaime 2005

DBD Tema 7

Ejercicios

57

A. Jaime 2005

Ejercicio: optimizacin por estimacin de coste


en BD Empresa

58

Ejercicio: optimizacin heurstica


en BD Empresa

Cul ser la forma ms conveniente de realizar las


siguientes operaciones?

DBD Tema 7

Escribe los rboles cannico y optimizado correspondientes a las siguientes consultas:

EMPLEADO:

rE=10.000 registros, bE=2.000 bloques


ndice secundario NSS: xNSS=4, sNSS=1 (clave)

secundario ND: xND=2, sND=80

a)

DEPTO:

rD=125 registros, bD=13 bloques


ndice primario NMD: xNMD=1, sNMD=1 (clave)
secundario NSS_JEFE: xNSS_JEFE=2, sNSS_JEFE=1 (clave)

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

SELECT NMEROP, NMD, APELLIDO, DIRECCIN,


FECHA_NCTO
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE NSS_JEFE=NSS AND NMD=NMEROD AND
LOCALIZACINP=Stafford

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

c)

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.

SELECT NOMBRE, APELLIDO, 1.1*SALARIO


FROM EMPLEADO, TRABAJA_EN, PROYECTO
WHERE NSS=NSSE AND NP=NMEROP AND
NOMBREP=ProductoX

A. Jaime 2005

A. Jaime 2005

DBD Tema 7

59

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

Ejercicio: optimizacin por estimacin de


coste en BD Comida rpida
Artculo NomArt Tipo Precio Tamao

Art_Ingr NomArt

NomIngr

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)

DBD Tema 7

62

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

Art_Ingr.NomArt= Artculo.NomArt
X

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

Artculo
Art_Ingr

Ingrediente

A. Jaime 2005

DBD Tema 7

63

A. Jaime 2005

DBD Tema 7

64

Ejercicio: optimizacin por estimacin de


coste en la BD Festival de cine

Ejercicio: optimizacin por estimacin de


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:


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.

A. Jaime 2005

DBD Tema 7

65

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

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

66

También podría gustarte