Академический Документы
Профессиональный Документы
Культура Документы
Consulta de usuario
en Alto Nivel
PROCESAMIE
TO DE CO
SULTAS
Y OPTIMIZACIO
Procesador
de Consultas
Comandos de Manipulacin de
Datos en Bajo Nivel
Acceso de la Consulta
Interfaces de
la Aplicacin
DBMS
Programas
de Aplicacin
Consulta
DML
preprocesador
Procesador
de Consultas
Cdigo
Objeto de APs
Manejador
de la BD
Esquema de
la Base de Datos
DDL
preprocesador
Manejador
de Archivos
Archivos
Catlogo del
de Datos
Sistema
Almacenamiento
en Disco
El esquema interno
El esquema externo
Llaves
Indices
Rel_name Index_name Member_attr Index_type Attr_no Asc_Desc
Consultas de las Vistas
Query
Attr_name Attr_num
Diccionario de Datos
DBAs
Programadores
de Aplicaciones
Diccionario de Datos
Usuarios
Finales
Compiladores de DDL:
View_name
DBMS
Archivos
de Datos
de Consultas
Descomposicin de Consulta
ESQUEMA
EXTER
O
Consulta en Algebra
ESQUEMA
LOGICO
Optimizacin
de Consulta
ESQUEMA
I
TER
O
Verificacin de
validacin
Verificacin de atributos y relaciones
Anlisis
normal conjuntiva
(p1 1p12 ... p1n) ... (pm 1pm2 ...pmn)
Forma
normal disyuntiva
(p1 1 p12 ... p1n) ... (pm 1
pm2 ... pmn)
Mapeo de
Mapeo de
OR dentro de la unin
A
D dentro de un join o seleccin
Restructuracin
Consulta en clculo => Consulta en lgreba
Ms de una traduccin es posible
Usa reglas de transformacin
ormalizacin
Lxico y Sintctico
Simplificacin
Eliminar predicados redundantes
Plan de Ejecucin
Anlisis
Normalizacin
Anlisis - Ejemplo
SELECT
FROM
WHERE
A
D
A
D
A
D
A
D
Anlisis
ENAME, RESP
E, G, J
E.ENO = G.ENO
G.JNO = J.JNO
JNAME = CAD/CAM
DUR 36
TITLE = Programmer
Grafo de consulta
SELECT
FROM
WHERE
A
D
A
D
A
D
ENAME, RESP
E, G, J
E.ENO = G.ENO
JNAME = CAD/CAM
DUR 36
TITLE = Programmer
DUR36
E.ENO=G.ENO
TITLE=
Programmer
DUR36
G.JNO=J.JNO
RESP
E.ENO=G.ENO
G.JNO=J.JNO
JNAME=CAD/CAM
ENAME
E.ENO=G.ENO
TITLE=Programmer
Por qu simplificar?
Consulta ms
JNAME=CAD/CAM
RESP
ENAME
RESULTADO
Simplificacin
RESULTADO
Simplificacin - Ejemplo
SELECT
FROM
WHERE
OR
A
D
OR
A
D
TITLE
E
E.ENAME = J. Doe
(
OT (E.TITLE = Programmer)
(E.TITLE = Programmer
E.TITLE = Elect. Eng.)
SELECT
FROM
WHERE
TITLE
E
E.ENAME = J. Doe
Restructurando
Convertir clculo Relacional a
algebra relacional
Hacer uso de rboles de consulta
Ejemplo
Encontrar los nombres de empleados
diferentes a J. Doe que trabajaron en
el proyecto CAD/CAM por 1 o 2 aos.
SELECT
FROM
WHERE
A
D
A
D
A
D
A
D
ENAME
ENAME
E, G, J
JNO
E.ENO = G.ENO
G.JNO = J.JNO
E.ENAME J. Doe
J.JNAME = CAD/CAM
(G.DUR = 12 OR G.DUR = 24) J
G
ENO
Project
Select
Join
Operacin
Complejidad
Select
Asumimos
Project
relaciones de cardinalidcad n
(Sin eliminar duplicados)
O(n)
bsqueda secuencial
Project
(Con eliminacin de duplicados)
O(nlogn)
Group
Join
Semi-join
Division
O(nlogn)
Operadores de conjuntos
2
Producto Cartesiano
O(n )
Consultas de Igualdad
Tambin llamadas consultas de punto
Encontrar empleados donde SAL=100000
Bsqueda secuencial
Fuerza bruta
Buscar todos los registros para encontrar el que aparea
Bsqueda binaria
Comparacin de igualdad sobre una atributo llave usado por
ordenamiento
Condicin Conjuntiva
Seleccin conjuntiva
Seleccin Selectiva
Los factores de selectividad indican el
porcentaje de la relacin(es) original(es)
que participar en el resultado
card(F(R) = SF(F) * card(R)
max(A) - valor
max(A) - min(A)
SF(A < valor) = valor - max(A)
max(A) - min(A)
SF(A > valor) =
Indice compuesto
Interseccin de apuntadores
Si ndices secundarios existen sobre todos o la mayora de los
atributos en la conjuncin y los ndices incluyen apuntadores a
registros
Estraer cada atributo usando estos ndices y tomar su interseccin
Ciclos Anidados
Simple iteracin e iteracin orientada a bloques
Sort-Merge Join
Hash Join
Hash R y S usando la misma funcin hash en el mismo archivo.
Unir los registros de R y S que caigan dentro del mismo bucket
Optimizacin de Consultas
No optimiza realmente, pero planea evitar
malas estrategias de ejecucin
Tipos
Basado en heursticas
Aplica reglas de transformacin acorde a una
estrategia general
Basado en Bost
Minimiza el costo de funcin
costo de I/O + costo de CPU
sujeto a un conjunto de restricciones
Optimizacin de Consultas
Costo de Alternativas
Por qu es importante?
SELECT
FROM
WHERE
A
D
ENAME
E,G
E.ENO = G.ENO
G.DUR > 37
Estrategia 1
ENAME(DUR>37 E.ENO=G.ENO(E X G))
Estrategia 2
ENAME( E
ENO (
Asumir:
DUR>37(G)))
Estartegia 1
Producto cartesiano = 40,000,000
Buscar en todas
= 40,000,000
80,000,000
Estartegia 2
Seleccin sobre G =
10,000
Join(4000*1000) = 4,000,000
4,010,000
Bsqueda exhaustiva
- basado en costo
- optima
- complejidad combinatorial en el nmero de relaciones
Eurstica
- No optima
- Agrupa subexpresiones comunes
- Desarrollar seleccin, primeo proyeccin
- Reemplazar un join por una serir de semijoins
- reordenar operaciones para reducir el tamao de
las relaciones intermedias
- Optimiza operaciones individuales
Conmutatividad de Selecciones
c1 (c2(R)) c2 (c1(R))
c1 or c2(R) c1(R) c2(R)
Conmutatividad de Seleccin con Proyeccin
A1,A2, ...., An(c(R)) c(A1,A2,....,An(R))
Reglas de Transformacin
Donde R[A] y A A, A A y A A
conmutar seleccin con proyeccin
Reglas de Transformacin
donde Ai pertenece a R y T
ENAME
Arbol de consulta cannica
al final de la fase de
descomposicin
DUR=12 OR DUR=24
JNAME=CAD/CAM
JNAME=CAD/CAM AND
ENAME J. DOE
ENAME J. DOE
JNO
JNO
ENO
ENO
ENAME
ENAME
DUR=12 OR DUR=24
DUR=12 OR DUR=24
JNAME=CAD/CAM
JNO
ENO
JNO
JNAME=CAD/CAM
ENO
ENAME J. DOE
E
ENAME J. DOE
E
ENAME
Mete seleccin
J
O
J
O, E
AME
JNO
ENO
E
O
J
O, E
O
J
O, E
AME
J
AME =
DUR = 12 DUR = 24
E
AME
J. Doe
CAD/CAM
J
J
O
J
O, E
AME
J
AME =
J
O, E
O
DUR = 12 DUR = 24
E
Optimizacin de Consultas
Basada en Heursticas: Resumen
Primero aplica operaciones que reducen el tamao
de los resultados intermedios
E
AME
CAD/CAM
J
E
O
J
O
J. Doe
Costo de Almacenar
Indice y block de datos
Archivos intermedios
Costo de computacin
Planeacin de la consulta
Bsqueda, ordenamiento y unin de registros
Operaciones actuales de transaccin/consulta
Costo de Comunicacin
Transferencia de resultados al usuario
Componentes de Optimizacin
Basada en Costo
Espacio de bsqueda
Las estrategias de ejecucin alternativas (conjunto de
expresiones en lgebra equivalentes)
Algoritmo de bsqueda
Cmo encontrar las estrategias de ejecucin alternativa
en el espacio de bsqueda
Costo de funcin
Cmo calcular el relativo beneficio de varias
estrategias de ejecucin que son encontradas
Estadsticas
Lo siguiente es mantenido en el catlogo del sistema para
propsitos de optimizacin
Espacio de Bsqueda
Alternativas de estrategias de ejecucin
identificadas mediante
Las reglas de transformacin
Los diferentes operadores en los algoritmos de
ejecucin
Diferentes agrupamientos de operaciones
Estrategia de Bsqueda
((R
(R
R
((R
((R
.....
(R
S) T) W
(S T)) W
(S (T W))
T) S) W
W) S) T
S)
(T W)
Costo de Funciones
Tal vez el aspecto ms crtico en la optimizacin
de consultas
Usualmente basado en estimaciones de los
resultados intermedios
Dficil en estimar
Propagacin de error
INGRES
Dinmica
Interpretativa
System R
Esttica
Bsqueda Exhaustiva
Algoritmo de I
GRES
Descomponer cada consulta multi-variable dentro de
una secuencia de consultas mono-variable con una
variable comn
El procesador de consultas procesa una a una las variables
Elige un plan inicial de ejecucin (heurstica)
Ordena el resto mediante considerar tamaos de
relaciones intermedias
Separacin
q: SELECT
FROM
WHERE
Algoritmo-Descomposicin I
GRES
Separacin
consulta q despompuesta dentro de q q donde q y
q tienen una variable comn la cual es el resultado de q
La
Sustitucin de tupla
Reemplace el valor de cada tupla con los valores actuales
y simplifique la consulta
q(V1, V2, ... Vn) (q (t1, V2, V3, ... Vn), t1 R)
Ejemplo de Separacin
V2.A2, V3.A3, ..., Vn.An
R1 V1, ..., Rn.Vn
P1 (V1 . A1) A
D P2 (V1 . A1, V2 . A2, ..., Vn.An)
q: SELECT
FROM
WHERE
V1.A1, I
TO R1
R1 V1
P1 (V1 . A1)
q: SELECT
FROM
WHERE
q: SELECT
FROM
WHERE
A
D
A
D
E.E)AME
E, G, J
E.E)O=G.E)O
G.J)O=J.J)O
J.J)AME=CAD/CAM
q11:
SELECT
FROM
WHERE
q: SELECT
FROM
WHERE
A
D
J.J)O I
TO JVAR
J
J.J)AME=CAD/CAM
E.E)AME
E, G, JVAR
E.E)O=G.E)O
G,J)O=JVAR.J)O
E.E)AME
E, G, JVAR
E.E)O=G.E)O
G,J)O=JVAR.J)O
Sustitucin de Tuplas
q11 es una consulta mono-variable
q12 y q13 estn sujetas a sustitucin de tuplas
Asumimos que GVAR tiene unicamente 2 tuplas: <E1> y <E2>
entonces q13 queda
q131: SELECT
FROM
WHERE
q12: SELECT
FROM
WHERE
G.E)O I
TO GVAR
G, JVAR
G.J)O=JVAR.J)O
q13: SELECT
FROM
WHERE
E.E)AME
G, GVAR
E.E)O=GVAR.E)O
Algoritmo de System R
Consultas simples (ejem. mono-relacin) son
q132: SELECT
FROM
WHERE
E.E)AME
E
E.E)O=E2
Algoritmo de System R
Para los Joins, tiene 2 algoritmos alternativos:
Ciclos Anidados
Para cada tupla de relacin externa (cardinalidad n1)
Para cada tupla de relacin interna (cardinalidad n2)
join de dos tuplas si el predicado del join es verdadero
Fin
Fin
Complejidad: n1* n2
E.E)AME
E
E.E)O=E1
Mezclar Join
Ordena relaciones
Mezcla relaciones
Complejidad: n1+ n2 Si las relaciones son previamente
ordenadas y equijoin
Asumir:
E tiene un ndice sobre ENO
G tiene un ndice sobre JNO
J tiene un ndice sobre JNO y un ndice sobre JNAME
G
ENO
JNO
J
Algoritmo de System R
Algoritmo de System R
Alternativas
E
E G
pruned
G
ExJ
pruned
G
(G E)
GxJ
pruned
J
J
J
(J G)
JxE
pruned
E