Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Optimizacin (*)
Procesamiento y optimizacin de consultas
Elmasri/Navathe 02
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
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
bloque de consulta 2
Se Seevala evalaslo slouna unavez. vez. El Elresultado resultadose setrata tratacomo como una (>C) unaconstante constante(>C)
WHERE NUMD=5);
MAX SALARIO(NUMD=5(EMPLEADO))
Elegir plan de consulta
A. Jaime 2005
DBD Tema 7
A. Jaime 2005
DBD Tema 7
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.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
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
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
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
FECHA_NCTO>31-DIC-1957
EMPLEADO
PROYECTO TRABAJA_EN
APELLIDO NMEROP=NMP
Mejor |
| que ms
APELLIDO NSSE=NSS
PROYECTO TRABAJA_EN
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
APELLIDO NSSE=NSS
APELLIDO
||NSSE=NSS ||NMEROP=NMP
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
TRABAJA_EN
Mejor realizar a la vez todas las operaciones que necesiten una sola visita a los ficheros implicados
11
A. Jaime 2005
NSSE
A. Jaime 2005
DBD Tema 7
12
Reglas de transformacin
El orden en que queden los atributos es indiferente: 1) Cascada de :
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
C con atributos NO
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
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
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
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
Ordenado
19
A. Jaime 2005
DBD Tema 7
20
N de registros
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
A. Jaime 2005
A. Jaime 2005
DBD Tema 7
22
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
A. Jaime 2005
DBD Tema 7
23
A. Jaime 2005
DBD Tema 7
24
hay definido ningn ndice secundario. Si lo hubiera considerar lo que se dice para este tipo de ndice
Bloque 1
Adams, Robin Abbott, Diane Wright, Pam Adams, John Zimmer, Byron Akers, Jan ... Aaron, Ed Wyatt, Charles Acosta, Marc Algoritmos de seleccin: S1
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
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
...
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: =, >, <,
...
3 7
... 1 7 3 7 ... 9
1 9 3 7 1 3
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
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
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
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)
Ahora se presentan los 4 algoritmos considerando slo registros. Despus se revisan considerando bloques.
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
R |X|A=B S
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
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
R5
R6
R7
MEMORIA MEMORIA
Bferes para Bfer para fichero R fichero S Bfer para resultado
R7
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
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
Paso 1 sobre R:
Paso 2 sobre R:
R2 nada
Paso 3 sobre R:
R3 S2, S1
R1 S2
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
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
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
A. Jaime 2005
38
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
35 1 6
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
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
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)
DEPTO:
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
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
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
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
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
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
pasada Para calcular la unin no hace falta ordenar ya que se trata de conjuntos disjuntos (sin tuplas comunes)
A. Jaime 2005
DBD Tema 7
51
A. Jaime 2005
DBD Tema 7
52
Optimizacin semntica
Objetivo: simplificar la pregunta inicial Ejemplo:
SELECT FROM
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
A. Jaime 2005
A. Jaime 2005
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
55
A. Jaime 2005
DBD Tema 7
56
Ejercicios
A. Jaime 2005
DBD Tema 7
57
A. Jaime 2005
DBD Tema 7
58
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
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
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)
Artculo.NomArt
A. Jaime 2005
DBD Tema 7
63
A. Jaime 2005
DBD Tema 7
64
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
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