SlideShare una empresa de Scribd logo
Optimización de Consultas - Base de Datos II
1
Optimización de Consultas
Optimización de Consultas - Base de Datos II
2
Procesamiento de Consultas
 Los métodos de acceso a los datos en los sistemas pre-relacionales:
– eran de bajo nivel de abstracción
– inmersos en la lógica de navegación
– el programador estipulaba cómo recorrer los datos, debía ser experto
en los lenguajes de programación y en la base de datos
– uso de programación imperativa
Optimización de Consultas - Base de Datos II
3
Procesamiento de Consultas
 Los lenguajes de los sistemas posteriores (SQL para los relacionales
y OQL para los orientados a objetos)
– tienen un mayor nivel de abstracción
– son de estilo declarativo
– y por lo tanto no directamente ejecutables
 Surge la necesidad de tener un módulo de Procesamiento de
Consultas, que pueda transformar la especificación de la consulta
en un Plan de Ejecución
Optimización de Consultas - Base de Datos II
4
Optimizador de Consultas
 ¿Cómo se realiza la transformación del lenguaje declarativo al Plan
de Ejecución?
 En los sistemas pre-relacionales era el programador (experto), pero,
¿si la realidad cambiaba?
– ¿si se agrega un nuevo método de acceso a los datos?
– ¿si la cantidad de datos cambia?
– ¿si cambia la lógica de navegación?
– ¿si la distribución de los datos cambia?
 ¿El Plan de Ejecución del experto sigue siendo el mejor?
 Surge la necesidad de tener un nuevo módulo que, no solo pudiera
construir el plan, sino que fuera capaz de obtener una buena
solución al problema: Optimizador de Consultas
Optimización de Consultas - Base de Datos II
5
Optimización de Consultas
 El término optimización quizás no está bien utilizado:
– ¿se puede obtener el plan de ejecución óptimo?
– ¿qué costo tendría obtener el plan óptimo?
 El proceso de Optimización es la elección de la estrategia de
resolución de la consulta más eficiente para evaluar una expresión
 El plan de ejecución no necesariamente es el óptimo sino que la
consulta es optimizada
 Debemos considerar los costos involucrados en buscar el óptimo y
establecer cuando detenernos en la búsqueda del mejor plan
(velocidad de CPU, memoria disponible, discos, etc.)
Optimización de Consultas - Base de Datos II
6
Optimización de Consultas
 ¿Cuándo optimizamos?
– Optimizador Estático o en tiempo de compilación
 se puede tratar de llegar al óptimo
 ejecuta una única vez
 se guarda el plan de ejecución en la base de datos
– Optimizador Dinámico o Interactivo
 realiza la optimización en el momento que el programa que
ejecuta lo solicita
 generalmente es en ambiente transaccional
 se puede llegar a guardar el plan de ejecución en algún cache de
memoria de la base de datos
Optimización de Consultas - Base de Datos II
7
Optimización de Consultas
 ¿Cómo se realiza la optimización?
– Optimizador basado en reglas o Heurístico
 aplica un conjunto de reglas para reducir el universo de opciones
de la consulta, de forma tal de obtener un plan de ejecución
 El resultado no suele ser el óptimo
– Optimizador exhaustivo o sistemático
 evalúa todos los posibles planes de ejecución
 suele trabajar con estimaciones del costo de ejecución
 no, necesariamente, obtiene un plan de ejecución óptimo, pero
sus resultados son mejores que los heurísticos
 tiene como desventaja que se aumenta el costo de producir el plan
de ejecución
Optimización de Consultas - Base de Datos II
8
Optimización de Consultas (cont.)
 ¿Cómo se realiza la optimización?
– Optimizador basado en costos
 Para evaluar las alternativas distintos planes de ejecución, estima
los costos de cada una de las operaciones involucradas,
quedándose con aquel menor
 Requiere de mantener información estadística de los datos,
distribución, cantidades, etc. para realizar la estimación de cada
operación
– Optimizador semántico
 Se aprovecha del conocimiento de las estructuras de los datos, por
ej., una búsqueda por igualdad de la clave primaria con un valor
retorna, a lo más, una sola fila.
Optimización de Consultas - Base de Datos II
9
Procesamiento de una consulta
Entrada: Consulta en lenguaje de alto nivel (SQL o OQL)
 Analizador Sintáctico y Semántico,
– controla si la consulta es correcta, tanto sintácticamente como semánticamente
– El resultado es una forma intermedia de la consulta, analizada y validada
– Puede generar nuevas consultas para ser realizadas conjuntamente (controles
de integridad, lecturas al catálogo para validaciones, etc.)
 Optimizador de Consultas
– Aplica la política de optimización apropiada, según la base de datos y/o el
desarrollador de la aplicación
– El resultado es un Plan de Ejecución
 Generador de Código de la Consulta
– Transforma el Plan de Ejecución en un conjunto de llamadas a métodos de la
base de datos, capaces de resolver cada una de las operaciones del plan
– El resultado es el código de ejecución de la consulta
 Procesador de Comandos
– Es el que efectivamente ejecuta la consulta y controla los resultados
intermedios
– El resultado son los datos de la consulta
Optimización de Consultas - Base de Datos II
10
Representación interna de la Consulta
 SQL no es procedural (al menos en su especificación original, hoy en
día incluye los operadores algebraicos
 Por lo tanto, el primer paso que debe realizar el procesador de
consultas, es obtener una representación interna de la consulta,
que pueda ser ejecutada, así como también, de ser posible,
optimizada
 El SQL surgió del Cálculo Relacional, por lo que no sería muy
costoso, adaptar el Algoritmo de Reducción de Codd, para que su
entrada sea SQL en lugar de Cálculo, con lo que el resultado sería
una consulta en Algebra Relacional (extendido para soportar
aquellas cosas que el álgebra no soporta)
 Asimismo, las propiedades de todo álgebra (asociativas,
distributivas, conmutativas), permiten la manipulación de la
consulta para obtener una consulta más eficiente
 Por ej., ¿no sería mejor realizar una restricción antes que un
producto cartesiano?
Optimización de Consultas - Base de Datos II
11
Algoritmo de Reducción de Codd
1. Obtener el rango de las variables de tupla, incluyendo las
restricciones aplicables a cada una de ellas
2. Realizar el Producto Cartesiano de las variables de tupla del paso 1
3. Transformar los productos cartesianos, asociándolos a las
condiciones de reunión, para transformarlos en reuniones.
4. Transformar los cuantificadores universales y existenciales, de
derecha a izquierda, en:
a. Rx: proyectar el resultado para eliminar todos los atributos de Rx
b. Rx: dividir el resultado por Rx
5. Proyectar el resultado de acuerdo a la lista objetivo de la consulta
Optimización de Consultas - Base de Datos II
12
Algoritmo de Reducción de Codd Aplicado a SQL
1. Obtener el rango de las variables de tupla, incluyendo las restricciones
aplicables a cada una de ellas
a. emp where fec_nac>=‘1-ene-1984’ and sexo = ‘F’
b. depto where nombre_dpto=‘Informática’
c. ascensos where fec_ascenso<=’31-dic-1999’
select nro_dpto, nombre_dpto, nro_emp, nombre_emp
from emp e, depto d
where nombre_dpto = ‘Informática’
and fec_nac>= ‘1-ene-1984’
and sexo = ‘F’
and e.nro_dpto=d.nro_dpto
and not exists (select * from ascensos a
where e.nro_emp=a.nro_emp
and fec_ascenso<=’31-dic-1999’)
Optimización de Consultas - Base de Datos II
13
Algoritmo de Reducción de Codd Aplicado a SQL
2. Realizar el Producto Cartesiano de las variables de tupla del paso 1
(emp where fec_nac>=‘1-ene-1984’ and sexo = ‘F’) x
(depto where nombre_dpto=‘Informática’) x
(ascensos where fec_ascenso<=’31-dic-1999’)
select nro_dpto, nombre_dpto, nro_emp, nombre_emp
from emp e, depto d
where nombre_dpto = ‘Informática’
and fec_nac>= ‘1-ene-1984’
and sexo = ‘F’
and e.nro_dpto=d.nro_dpto
and not exists (select * from ascensos a
where e.nro_emp=a.nro_emp
and fec_ascenso<=’31-dic-1999’)
Optimización de Consultas - Base de Datos II
14
Algoritmo de Reducción de Codd Aplicado a SQL
3. Transformar los productos cartesianos, asociándolos a las condiciones de
reunión, para transformarlos en reuniones, consideramos:
e.nro_dpto=d.nro_dpto
(emp where fec_nac>=‘1-ene-1984’ and sexo = ‘F’) join
(depto where nombre_dpto=‘Informática’)
select nro_dpto, nombre_dpto, nro_emp, nombre_emp
from emp e, depto d
where nombre_dpto = ‘Informática’
and fec_nac>= ‘1-ene-1984’
and sexo = ‘F’
and e.nro_dpto=d.nro_dpto
and not exists (select * from ascensos a
where e.nro_emp=a.nro_emp
and fec_ascenso<=’31-dic-1999’)
Optimización de Consultas - Base de Datos II
15
Algoritmo de Reducción de Codd Aplicado a SQL
4. Transformar los cuantificadores universales y existenciales
COMPLEMENTO((emp where fec_nac>=‘1-ene-1984’ and sexo = ‘F’) join
(depto where nombre_dpto=‘Informática’) join
(π nro_emp ascensos where not (fec_ascenso<=’31-dic-1999’)))
Considere que la negación del cuantificador existencial resulta en calcular el
complemento.
select nro_dpto, nombre_dpto, nro_emp, nombre_emp
from emp e, depto d
where nombre_dpto = ‘Informática’
and fec_nac>= ‘1-ene-1984’
and sexo = ‘F’
and e.nro_dpto=d.nro_dpto
and not exists (select * from ascensos a
where e.nro_emp=a.nro_emp
and fec_ascenso<=’31-dic-1999’)
Optimización de Consultas - Base de Datos II
16
Algoritmo de Reducción de Codd Aplicado a SQL
4. Transformar los cuantificadores universales y existenciales
Hay que tener cuidado con la división:
Note que Rx x.a=y.b equivale a ¬Rx where ¬(x.a=y.b)
¿Qué operación de álgebra es esa doble negación?
and not exists (select * from dpto_emp d_e
where e.nro_emp=d_e.nro_emp
and not exists (select * from dpto d
where de.nro_depto=d.nro_depto))
Optimización de Consultas - Base de Datos II
17
Algoritmo de Reducción de Codd Aplicado a SQL
5. Proyección final:
π nro_emp, nombre_emp, nro_dpto, nombre_dpto (emp where fec_nac>=‘1-ene-1984’ and
sexo = ‘F’) join
(depto where nombre_dpto=‘Informática’) join
(π nro_emp ascensos where not (fec_ascenso<=’31-dic-1999’))
select nro_dpto, nombre_dpto, nro_emp, nombre_emp
from emp e, depto d
where nombre_dpto = ‘Informática’
and fec_nac>= ‘1-ene-1984’
and sexo = ‘F’
and e.nro_dpto=d.nro_dpto
and not exists (select * from ascensos a
where e.nro_emp=a.nro_emp
and fec_ascenso<=’31-dic-1999’)
Optimización de Consultas - Base de Datos II
18
Algoritmo de Reducción de Codd Aplicado a SQL
 Aplicamos normalmente el Algoritmo de Reducción de Codd,
aplicando la transformación nro_dpto in, por la comparación de
atributos que representa:
(emp e x depto d where nombre_dpto=‘Informática’)
where [NOT] e.nro_dpto=d.nro_depto
select nro_emp, nombre_emp
from emp e
where nro_dpto [NOT] in (select nro_depto from depto a
where nombre_dpto = ‘Informática’)
Optimización de Consultas - Base de Datos II
19
Traducción de SQL a Algebra Relacional
 Descomponiendo la consulta en sus subconsultas y procediendo en
un esquema de dividir y conquistar, se puede transformar, cualquier
consulta, por más compleja que sea a Álgebra Relacional.
 Cada una de las subconsultas obtenidas, llamados bloques de
consulta, se podrá optimizar independientemente y luego
componer los resultados
 Hay que tener especial cuidado en las consultas correlacionada
 El resultado de la traducción se puede ver como un árbol o un grafo
de la consulta, donde las hojas son las tablas (o resultados
intermedios anteriores), y los nodos son los operandos del álgebra
Optimización de Consultas - Base de Datos II
20
Optimización Heurística
 Se utiliza para modificar la estructura de la representación interna
de la consulta
 La idea subyacente es buscar el uso de reglas genéricas, que
normalmente conducen a una consulta más apropiada
 Por ejemplo: Realizar restricciones y proyecciones antes que
cualquier operación binaria, se sustenta en el principio que habrán
menos datos para las operaciones subsecuentes
 No hay “una” heurística, se trata de todos aquellos optimizadores
en que se aplican reglas como las mostradas para realizar la
optimización
 Las reglas se suelen basar en las propiedades de los operadores del
álgebra relacional (asociativa, distributiva, conmutativa)
Optimización de Consultas - Base de Datos II
21
Reglas Generales de Transformación
R1 Cascada de Restricciones
σc1 AND c2 AND ... AND cn (R) = σc1(σc2(...(σcN(R))...))
R2 Conmutatividad de Restricciones
σc1(σc2(R)) = σc2(σc1(R))
R3 Cascada de Proyecciones
πLista1(πLista2(...πListan(R)) = πLista1(R)
Optimización de Consultas - Base de Datos II
22
Reglas Generales de Transformación
R4 Conmutación de Restricción con Proyección
πA1, A2, ... An(σc(R)) = σc(πA1, A2, ... An(R))
R5 Conmutación de Reunión (y Producto Cartesiano)
RcS=ScR
R6 Conmutación de Restricción con Producto Cartesiano
σc(RS) = (σc(R))S
Optimización de Consultas - Base de Datos II
23
Reglas Generales de Transformación
R7 Conmutación de Proyección con Reunión
– πL(RcS) = πA1,...,An(R) c (πB1,...,Bm(S))
R8 Conmutatividad de las operaciones de conjuntos
 eson conmutativas; la diferencia no
R9 Asociatividad de  x 
– Θ representa a cualquiera de ellas
– (RΘS)ΘT = RΘ(SΘT)
Optimización de Consultas - Base de Datos II
24
Reglas Generales de Transformación
R10 Conmutación de Restricción con  y –
Θ representa cualquiera de las operaciones de conjuntos
σc(RΘS) = (σc(R)) Θ (σc(S))
R11 Conmutación de Proyección con 
πL (R S) = (πL (R)) (πL (S))
R12 Conversión de una secuencia (σ x ) a 
σc(R x S) = (RcS)
Optimización de Consultas - Base de Datos II
25
Algoritmo de Optimización Heurístico
 Ahora bien, ¿de qué forma usamos inteligentemente las
transformaciones anteriores para obtener una consulta
optimizada?
 Por ejemplo, podríamos realizar nuestro optimizador tomando
decisiones de alcance local, suponiendo que mejora el resultado
global:
– Que las operaciones más selectivas ejecuten lo antes posible
– Que las operaciones con resultados más pequeños, en términos de
cantidad de bytes, ejecuten lo antes posible
– Ante una operación binaria, seleccionar la más eficiente con respecto
a otras equivalente
 El resultado estará optimizado pero no necesariamente será
óptimo ¿por qué?
Optimización de Consultas - Base de Datos II
26
Algoritmo de Optimización Heurístico
Usando R1, desagrupar las Restricciones en una cascada de
restricciones
σc1 AND c2 AND ... AND cn (R) => σc1(σc2(...(σcN(R))...))
 Con esta estrategia podríamos realizar las restricciones que
retornen menor cantidad de registros antes
 Permite usar con más libertad la propiedad de conmutación y
asociación
 Nótese que las condiciones pueden ser
– comparaciones simples
A1 Ө‘c’
– entre atributos, no necesariamente de la misma tabla
R.A1 Ө S.B1
Optimización de Consultas - Base de Datos II
27
Algoritmo de Optimización Heurístico
Usando R2, R4, R6 y R10, (conmutación de las restricciones consigo
mismas, proyeccciones, producto cartesiano y operadores de
conjuntos), mover las Restricciones lo más al principio de la
consulta posible
 Se basa en el supuesto es que se reduce la cantidad de datos que
entrarán a las operaciones subsiguientes
 El supuesto es que menos datos, ejecuta más rápido ¿siempre?
 Se debe considerar el costo de realizar cada una de las operaciones,
cómo se devuelven los datos para el paso siguiente y los métodos
de acceso disponibles en cada nivel
Optimización de Consultas - Base de Datos II
28
Algoritmo de Optimización Heurístico
Usando R5 y R9 (conmutación de producto cartesiano y reunión, y
asociación de operadores), mover las hojas de los árboles (las
tablas de entrada) con la restricción mayor (con la menor cantidad
y tamaño de resultados esperados), lo más al principio posible.
 Con esto se pretende llevar las operaciones binarias lo más cercano
posible a las restricciones que menor cantidad de resultados se
esperen
 Se evitar la proliferación de productos cartesianos en lugar de
reuniones (por la eficiencia!!!)
 ¿Qué métodos existen para hacer un producto cartesiano? ¿y una
reunión?
Optimización de Consultas - Base de Datos II
29
Algoritmo de Optimización Heurístico
Usando R12, transformar restricciones y productos cartesianos en
reuniones
σc(R x S) = (RcS)
 Hay métodos más eficientes de realizar reuniones que productos
cartesianos (fuerza bruta)
 Por ejemplo, Mishra y Eich, en “Join processing on relational
databases”, publicado en ACM Computer Survey Vol.24 nº1 de
Marzo de 1992, analizaba 46 técnicas distintas, unos más eficientes
que otros, en determinadas circunstancias
Optimización de Consultas - Base de Datos II
30
Algoritmo de Optimización Heurístico
Usando R3, R4, R7 y R11 (conmutación de la proyección), mover las
proyecciones lo más al principio posible
 Nuevamente calculando transportar la menor cantidad de datos
posibles al próximo operador
 Se debe considerar que esa conmutación no siempre es válida, por
ejemplo, si eliminamos alguna columna que se use en operaciones
posteriores
Optimización de Consultas - Base de Datos II
31
Algoritmo de Optimización Heurístico
 Hemos dado un ejemplo de una heurística que parece razonable,
pensando en forma analítica, para la optimización de una consulta
 No suele ser óptimo el resultado porque se puede estar eliminando
caminos más eficientes para las operaciones subsiguientes
 Por eso decimos que las decisiones locales pueden afectar el
resultado global, no alcanzándose el óptimo
Optimización de Consultas - Base de Datos II
32
Optimizador Exhaustivo o Sistemático
 ¿Qué pasa si en lugar de evaluar siguiendo reglas se intenta evaluar
todos los posibles planes de ejecución?
 El resultado será óptimo, pero solamente podrá saberse luego de
ejecutada todas las posibles variantes de los planes de ejecución
 Debemos tener una estrategia para poder determinar cuál es el
mejor plan posible
 Para ello debemos contar una estimación de que costo tendrá el
ejecutar cada uno de los planes, y determinar quien es el mejor plan
 Al ser un costo estimado, el plan de ejecución seleccionado, no
necesariamente será el óptimo, aunque seguramente sea mejor que
el haber aplicado heurísticas
Optimización de Consultas - Base de Datos II
33
Optimización basada en costos
 El costo de una consulta se mide en base a:
– Costo del acceso a memoria secundaria donde residen los datos
– Costo del acceso a memoria secundaria de resultados
intermedios y áreas de trabajo
– Costo de procesamiento
– Costo en el uso de memoria principal
– Costo de comunicaciones, resultante de llevarle los datos al
programa de aplicación
Optimización de Consultas - Base de Datos II
34
Optimización basada en costos (cont.)
 Se usa toda posible información concerniente a tamaños y
cantidades:
– Tamaño de cada archivo
– Cantidad de registros
– Tamaño del registro
– Cantidad de bloques o páginas que ocupa
– Métodos de acceso y sus atributos
– Cantidad de niveles de cada índice
– Número de valores distintos de un atributo
– Cardinalidad de la selección
– Cantidad de registros que satisfacen una condición de igualdad
– Reglas de integridad (dominio, entidad y referencia)
Optimización de Consultas - Base de Datos II
35
Algoritmos básicos para los operadores
 Mediante los mecanismos de optimización (heurístico o
exhaustivos), hemos logrado construir un plan de ejecución
 En el plan de ejecución se indica que operaciones algebraicas se
deben realizar y en que orden
 ¿Hay una única opción para implementar cada uno de los
operadores?
 ¿Qué debemos considerar?
– Métodos de acceso (índices, dispersiones, bitmaps, etc.)
– Selectividad/Distribución de los datos
– Ordenes de ejecución
– Estimación de costos
– Utilización de procesamiento paralelo
– Anidamiento de operaciones
– Subárboles repetidos
Implementación de la Restricción
 S1: Búsqueda secuencial o por Fuerza Bruta
– Leer todos los registros del fichero y comprobar si los valores de sus
atributos satisfacen la condición de la restricción
– Se necesita leer la mitad de registros en promedio
 S2: Bipartición o Búsqueda Binaria
– Si la condición de selección implica una comparación de igualdad sobre un
atributo clave según el cual está ordenado el archivo
– Orden logarítmico (log2 N)
 S3: Uso de un índice primario o una dispersión (hash)
– Comparación de igualdad sobre PK con índice primario
– Tantas lecturas como niveles del índice o 1 para el hash
Implementación de la Restricción (cont.)
 S4: Índice primario para múltiples registros
– Condición de comparación <, <=, >, >=
– Se utiliza el índice para encontrar el primer registro y luego se recorren los
siguientes registros (Arbol B*/B+
)
 S5: Índices de agrupamiento para múltiples registros
– Comparación de igualdad sobre atributo no clave con índice de
agrupamiento
– Idem anterior
 S6: Índices secundarios (Árbol B*/B+)
– Un sólo registro si es un campo clave o varios si es no clave
– Tantas lecturas como niveles tenga el árbol
Implementación de la Restricción (cont.)
 S7: Conjunción de restricciones con índice individual
– Si en una restricción conjuntiva existe un índice (casos 1 a 6). Luego
comprobar el resto de las condiciones.
 S8: Conjunción de restricciones con índice compuesto
– Si dos o más atributos intervienen en condiciones de igualdad en la
condición conjuntiva y existe un índice compuesto sobre los campos
combinados
 S9: Conjunción de restricciones por intersección de apuntadores a
registros
– Si de restricciones anteriores se han obtenido punteros a los registros, se
pueden intersectar para hallar los que cumplan ambas condiciones
– El orden de ejecución es el de la intersección (depende de si vienen o no
ordenados
Optimización de Consultas - Base de Datos II
39
Implementación de la Restricción (cont.)
 S10: Restricciones con índice bitmap
– Se buscan el bitmap del valor de búsqueda
– Considerar que es de baja capacidad de selección, por lo que retornará
tantos resultados como bit en 1 tenga el valor
 S11: Conjunción de restricciones con índice bitmap
– Se buscan los bitmap de los valores a comparar
– Se realiza el AND lógico de los bitmap de cada uno de esos valores.
– El orden de ejecución es una lectura por valor, pudiendose despreciar
el cálculo del AND en memoria
Implementación de la Reunión
 Existen una muy buena cantidad de literatura al respecto y por ello la
gran cantidad de algoritmos para realizar la reunión
 Muchos de ellos son variantes de otros, por lo que veremos los básicos y
discutiremos aquellas variantes interesantes
 Algunos algoritmos necesitan de pre-procesamiento, como ser ordenar
resultados previos o la creación de estructuras auxiliares
 Constantemente se proponen nuevos algoritmos, para ambientes
especiales, arquitecturas paralelas, etc.
 La reunión más común es la dada por la relación PK/FK, resultante de un
buen modelado del problema
 También es necesario la consideración de reuniones anidadas o estrella
 Existen, 4 formas básicas de realizar la reunión: fuerza bruta, bucle
único, sort-merge join y hash join.
Implementación de la Reunión (cont.)
 R1 - Reunión de bucles anidados o Fuerza bruta
– Para cada registro de R, obtener todos los registros de S y comprobar la
condición de comparación, del atributo A de R, con el B de S: R.A Ө S.B
– Se realiza por dos bucles anidados recorriendo cada una de las tablas, de ahí
su nombre de fuerza bruta (orden m x n)
 R2 - Reunión de bucle único – uso de estructuras de acceso para
obtener los registros coincidentes
– Si existe un método de acceso para uno de los atributos de reunión (Ej.;
S.A), se accede a todos los registros de la tabla R en un bucle y se utiliza la
estructura de acceso para acceder a los registros de la tabla S (orden n log
n)
– Suele ser el método usado para vincular dos tablas por su relación PK/FK, ya
que se parte del supuesto que hay un método de acceso directo para la PK
Implementación de la Reunión (cont.)
 R3 - Reunión por clasificación-fusión o sort-merge join
– Si los registros de S y T están clasificados físicamente se usan directamente,
sino se ordenan por los atributos a comparar
– Es como el apareo de archivos comparando las condiciones de reunión
entre los registros
 R4 - Reunión por dispersión o hash join
– Se dispersan la tabla más pequeña primero
– Luego se dispersa la tabla más grande, si hay colisiones se cumple la
reunión
– Las funciones de hash también son usadas para particionar las tablas a ser
reunidas y luego aplicarle alguno de los métodos anteriores (los fragmentos
son disjuntos)
Optimización de Consultas - Base de Datos II
43
Implementación de la Reunión (cont.)
 Existen variantes de los métodos anteriores que buscan optimizar
determinadas condiciones de los datos
 Se suelen basar en la construcción de estructuras adicionales
(índices, etc.), que luego se usan para realizar la reunión
 Se usan estructuras como:
– árboles T, múltiples elementos por nodo
– arboles kd, multidimensionales, k es la dimensión, indexando k claves
– árboles Bc, su nodos son compuestos, mantienen pares de valores que
reúnen
 Los algoritmos suelen ser de la forma siguiente:
– Se crea la estructura (el índice) de búsqueda para la tabla más pequeña
– Se lee la más grande en un bucle, buscando los valores de reunión en la
estructura creada previamente
Implementación de la Proyección
 Fácil de implantar si se incluye la PK de la tabla, los registros son todos,
solamente se eliminan las columnas no presentes en la lista de la
proyección
 Si no se incluye la PK
– Ordenar resultado y eliminar registros repetidos
– También se puede utilizar alguna estructura adicional como puede ser una
dispersión o un índice
Implementación de operadores de conjuntos
 Unión, Intersección, Diferencia y Producto Cartesiano
– Muy costosas
– Especialmente el producto cartesiano, realizable por dos bucles anidados
– En éstas se utilizará por ejemplo clasificación-fusión (sort-merge)
 Ordenar sobre los mismos atributos
 Luego basta con pasar por cada relación
– También puede utilizarse alguna estructura auxiliar como una dispersión o
un índice
Optimización de Consultas - Base de Datos II
46
Implementación de operaciones combinadas
 También se suelen combinar algoritmos en la implementación de
los operadores, aplicando la propieda asociativa
 Normalmente, el plan de ejecución estipula guardar los resultados
intermedios (en memoria principal si alcanza, sino en disco), para
ser usados en operaciones subsiguientes
 Por ejemplo, ¿qué costaría realizar una reunión conjuntamente con
alguna restricción adicional, sin necesidad de grabar un archivo
temporario?
 Un ejemplo de esto es la reunión estrella, que permite tener
resultados satisfactorios a la reunión de una tabla con una variedad
de tablas referidas por FK de ella
 Es normal generar el código de ejecución, encadenando todas las
operaciones posibles, de forma de reducir la cantidad de resultados
intermedios
Optimización de Consultas - Base de Datos II
47
Optimización - Conclusiones
 Hemos vistos varias técnicas para elaborar planes de ejecución y sus
correspondientes códigos de ejecución
 No hay duda que es un componente extremadamente complejo, si
es que quiere jactarse de ser eficiente
 La cantidad de variantes es impresionante, queda librado a la
imaginación de los que implementan el Optimizador
Optimización de Consultas - Base de Datos II
48
¿Dudas?
Ejercicio
Optimización de Consultas - Base de Datos II
49
SELECT MAT, AÑO, SEM, CI, NOMBRE_MAT,NOMBRE_EST
FROM ESTUDIANTES E, MATERIA, M. ÌNSCRIPCION I
WHERE E.CI = I.CI AND
M.MATERIA = I.MATERIA AND
I.AÑO = 2011 AND
I.SEM = 1 AND
EXISTS (SELECT *
FROM CARRERA C, MAT_CARRERA MC
WHERE C.CARR = ‘ING.INF’ AND
I.MATERIA = MC.MATERIA AND
C.CARR = MC.CARR)

Más contenido relacionado

PPS
GuíA Para La OptimizacióN De Consultas
PPT
Optimizacion De Consultas
PDF
My sql2doextra
PPTX
Presentacion acces michu
PPTX
Carlos dominguez
PPTX
Optimizaciones
DOC
Optimizacion consultas oracle
PPTX
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
GuíA Para La OptimizacióN De Consultas
Optimizacion De Consultas
My sql2doextra
Presentacion acces michu
Carlos dominguez
Optimizaciones
Optimizacion consultas oracle
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala

Similar a Optimizacion de Consultas en SQL (Base datos).ppt (20)

PPT
Abd procesamiento consultas (parte1)
PPT
Como cerar una base de datos con myql server.ppt
PPTX
Taller básico Herramientas Rendimiento DB2 en iSeries
DOCX
Cuestionario
PDF
Johan nuevo
PDF
Johan nuevo
PDF
Optimizacion consultas oracle
PPTX
DOCX
Cuestionario quinto curso
DOCX
Cuestionario quinto curso
DOCX
Cuestionario quinto curso
ODP
T4 Sql 2 Lmd Log
PPTX
DOCX
Trabajo de Normas Icontec
DOCX
trabajo de Normas Icontec
DOCX
trabajo de Normas Icontec
PPTX
Capítulo 15 (Algoritmos para el procesamiento y optimizacion de consultas)
PDF
301125 17 willian garcerant-fase1
DOCX
Johan nuevo 2
PPT
B Datos _MICELI
Abd procesamiento consultas (parte1)
Como cerar una base de datos con myql server.ppt
Taller básico Herramientas Rendimiento DB2 en iSeries
Cuestionario
Johan nuevo
Johan nuevo
Optimizacion consultas oracle
Cuestionario quinto curso
Cuestionario quinto curso
Cuestionario quinto curso
T4 Sql 2 Lmd Log
Trabajo de Normas Icontec
trabajo de Normas Icontec
trabajo de Normas Icontec
Capítulo 15 (Algoritmos para el procesamiento y optimizacion de consultas)
301125 17 willian garcerant-fase1
Johan nuevo 2
B Datos _MICELI
Publicidad

Último (20)

PPTX
diego universidad convergencia e información
PDF
LIBRO UNIVERSITARIO INTELIGENCIA ALGORITMICA BN.pdf
PPTX
Riesgo eléctrico 5 REGLAS DE ORO PARA TRABAJOS CON TENSION
PDF
silabos de colegio privado para clases tema2
PPTX
DEBL Presentación PG 23.pptx [Autoguardado].pptx
PPTX
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
PDF
SISTEMAS DE PUESTA A TIERRA: Una introducción a los fundamentos de los sistem...
PDF
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
PPTX
leyes de los gases Ideales. combustible refinación
PPTX
Introduccion quimica del fuego.ffffffffffpptx
PDF
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
PPT
357161027-seguridad-industrial-diapositivas-ppt.ppt
PDF
Clase 2 de abril Educacion adistancia.pdf
PDF
Pensamiento Politico Siglo XXI Peru y Mundo.pdf
PPTX
CNE-Tx-ZyD_Comite_2020-12-02-Consolidado-Version-Final.pptx
PPTX
Presentacion ppt rx en soldadura tp 231 vladimir Osuna 7114958 20241.pptx
PDF
ntc5951 Metodo de ensayo para determinar las propiedades de tension en plasti...
PPTX
Presentación - Taller interpretación iso 9001-Solutions consulting learning.pptx
PPTX
Software para la educación instituciones superiores
PPTX
LEVANTAMIENTOS TOPOGRAFICOS - DIAPOSITIVAS
diego universidad convergencia e información
LIBRO UNIVERSITARIO INTELIGENCIA ALGORITMICA BN.pdf
Riesgo eléctrico 5 REGLAS DE ORO PARA TRABAJOS CON TENSION
silabos de colegio privado para clases tema2
DEBL Presentación PG 23.pptx [Autoguardado].pptx
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
SISTEMAS DE PUESTA A TIERRA: Una introducción a los fundamentos de los sistem...
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
leyes de los gases Ideales. combustible refinación
Introduccion quimica del fuego.ffffffffffpptx
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
357161027-seguridad-industrial-diapositivas-ppt.ppt
Clase 2 de abril Educacion adistancia.pdf
Pensamiento Politico Siglo XXI Peru y Mundo.pdf
CNE-Tx-ZyD_Comite_2020-12-02-Consolidado-Version-Final.pptx
Presentacion ppt rx en soldadura tp 231 vladimir Osuna 7114958 20241.pptx
ntc5951 Metodo de ensayo para determinar las propiedades de tension en plasti...
Presentación - Taller interpretación iso 9001-Solutions consulting learning.pptx
Software para la educación instituciones superiores
LEVANTAMIENTOS TOPOGRAFICOS - DIAPOSITIVAS
Publicidad

Optimizacion de Consultas en SQL (Base datos).ppt

  • 1. Optimización de Consultas - Base de Datos II 1 Optimización de Consultas
  • 2. Optimización de Consultas - Base de Datos II 2 Procesamiento de Consultas  Los métodos de acceso a los datos en los sistemas pre-relacionales: – eran de bajo nivel de abstracción – inmersos en la lógica de navegación – el programador estipulaba cómo recorrer los datos, debía ser experto en los lenguajes de programación y en la base de datos – uso de programación imperativa
  • 3. Optimización de Consultas - Base de Datos II 3 Procesamiento de Consultas  Los lenguajes de los sistemas posteriores (SQL para los relacionales y OQL para los orientados a objetos) – tienen un mayor nivel de abstracción – son de estilo declarativo – y por lo tanto no directamente ejecutables  Surge la necesidad de tener un módulo de Procesamiento de Consultas, que pueda transformar la especificación de la consulta en un Plan de Ejecución
  • 4. Optimización de Consultas - Base de Datos II 4 Optimizador de Consultas  ¿Cómo se realiza la transformación del lenguaje declarativo al Plan de Ejecución?  En los sistemas pre-relacionales era el programador (experto), pero, ¿si la realidad cambiaba? – ¿si se agrega un nuevo método de acceso a los datos? – ¿si la cantidad de datos cambia? – ¿si cambia la lógica de navegación? – ¿si la distribución de los datos cambia?  ¿El Plan de Ejecución del experto sigue siendo el mejor?  Surge la necesidad de tener un nuevo módulo que, no solo pudiera construir el plan, sino que fuera capaz de obtener una buena solución al problema: Optimizador de Consultas
  • 5. Optimización de Consultas - Base de Datos II 5 Optimización de Consultas  El término optimización quizás no está bien utilizado: – ¿se puede obtener el plan de ejecución óptimo? – ¿qué costo tendría obtener el plan óptimo?  El proceso de Optimización es la elección de la estrategia de resolución de la consulta más eficiente para evaluar una expresión  El plan de ejecución no necesariamente es el óptimo sino que la consulta es optimizada  Debemos considerar los costos involucrados en buscar el óptimo y establecer cuando detenernos en la búsqueda del mejor plan (velocidad de CPU, memoria disponible, discos, etc.)
  • 6. Optimización de Consultas - Base de Datos II 6 Optimización de Consultas  ¿Cuándo optimizamos? – Optimizador Estático o en tiempo de compilación  se puede tratar de llegar al óptimo  ejecuta una única vez  se guarda el plan de ejecución en la base de datos – Optimizador Dinámico o Interactivo  realiza la optimización en el momento que el programa que ejecuta lo solicita  generalmente es en ambiente transaccional  se puede llegar a guardar el plan de ejecución en algún cache de memoria de la base de datos
  • 7. Optimización de Consultas - Base de Datos II 7 Optimización de Consultas  ¿Cómo se realiza la optimización? – Optimizador basado en reglas o Heurístico  aplica un conjunto de reglas para reducir el universo de opciones de la consulta, de forma tal de obtener un plan de ejecución  El resultado no suele ser el óptimo – Optimizador exhaustivo o sistemático  evalúa todos los posibles planes de ejecución  suele trabajar con estimaciones del costo de ejecución  no, necesariamente, obtiene un plan de ejecución óptimo, pero sus resultados son mejores que los heurísticos  tiene como desventaja que se aumenta el costo de producir el plan de ejecución
  • 8. Optimización de Consultas - Base de Datos II 8 Optimización de Consultas (cont.)  ¿Cómo se realiza la optimización? – Optimizador basado en costos  Para evaluar las alternativas distintos planes de ejecución, estima los costos de cada una de las operaciones involucradas, quedándose con aquel menor  Requiere de mantener información estadística de los datos, distribución, cantidades, etc. para realizar la estimación de cada operación – Optimizador semántico  Se aprovecha del conocimiento de las estructuras de los datos, por ej., una búsqueda por igualdad de la clave primaria con un valor retorna, a lo más, una sola fila.
  • 9. Optimización de Consultas - Base de Datos II 9 Procesamiento de una consulta Entrada: Consulta en lenguaje de alto nivel (SQL o OQL)  Analizador Sintáctico y Semántico, – controla si la consulta es correcta, tanto sintácticamente como semánticamente – El resultado es una forma intermedia de la consulta, analizada y validada – Puede generar nuevas consultas para ser realizadas conjuntamente (controles de integridad, lecturas al catálogo para validaciones, etc.)  Optimizador de Consultas – Aplica la política de optimización apropiada, según la base de datos y/o el desarrollador de la aplicación – El resultado es un Plan de Ejecución  Generador de Código de la Consulta – Transforma el Plan de Ejecución en un conjunto de llamadas a métodos de la base de datos, capaces de resolver cada una de las operaciones del plan – El resultado es el código de ejecución de la consulta  Procesador de Comandos – Es el que efectivamente ejecuta la consulta y controla los resultados intermedios – El resultado son los datos de la consulta
  • 10. Optimización de Consultas - Base de Datos II 10 Representación interna de la Consulta  SQL no es procedural (al menos en su especificación original, hoy en día incluye los operadores algebraicos  Por lo tanto, el primer paso que debe realizar el procesador de consultas, es obtener una representación interna de la consulta, que pueda ser ejecutada, así como también, de ser posible, optimizada  El SQL surgió del Cálculo Relacional, por lo que no sería muy costoso, adaptar el Algoritmo de Reducción de Codd, para que su entrada sea SQL en lugar de Cálculo, con lo que el resultado sería una consulta en Algebra Relacional (extendido para soportar aquellas cosas que el álgebra no soporta)  Asimismo, las propiedades de todo álgebra (asociativas, distributivas, conmutativas), permiten la manipulación de la consulta para obtener una consulta más eficiente  Por ej., ¿no sería mejor realizar una restricción antes que un producto cartesiano?
  • 11. Optimización de Consultas - Base de Datos II 11 Algoritmo de Reducción de Codd 1. Obtener el rango de las variables de tupla, incluyendo las restricciones aplicables a cada una de ellas 2. Realizar el Producto Cartesiano de las variables de tupla del paso 1 3. Transformar los productos cartesianos, asociándolos a las condiciones de reunión, para transformarlos en reuniones. 4. Transformar los cuantificadores universales y existenciales, de derecha a izquierda, en: a. Rx: proyectar el resultado para eliminar todos los atributos de Rx b. Rx: dividir el resultado por Rx 5. Proyectar el resultado de acuerdo a la lista objetivo de la consulta
  • 12. Optimización de Consultas - Base de Datos II 12 Algoritmo de Reducción de Codd Aplicado a SQL 1. Obtener el rango de las variables de tupla, incluyendo las restricciones aplicables a cada una de ellas a. emp where fec_nac>=‘1-ene-1984’ and sexo = ‘F’ b. depto where nombre_dpto=‘Informática’ c. ascensos where fec_ascenso<=’31-dic-1999’ select nro_dpto, nombre_dpto, nro_emp, nombre_emp from emp e, depto d where nombre_dpto = ‘Informática’ and fec_nac>= ‘1-ene-1984’ and sexo = ‘F’ and e.nro_dpto=d.nro_dpto and not exists (select * from ascensos a where e.nro_emp=a.nro_emp and fec_ascenso<=’31-dic-1999’)
  • 13. Optimización de Consultas - Base de Datos II 13 Algoritmo de Reducción de Codd Aplicado a SQL 2. Realizar el Producto Cartesiano de las variables de tupla del paso 1 (emp where fec_nac>=‘1-ene-1984’ and sexo = ‘F’) x (depto where nombre_dpto=‘Informática’) x (ascensos where fec_ascenso<=’31-dic-1999’) select nro_dpto, nombre_dpto, nro_emp, nombre_emp from emp e, depto d where nombre_dpto = ‘Informática’ and fec_nac>= ‘1-ene-1984’ and sexo = ‘F’ and e.nro_dpto=d.nro_dpto and not exists (select * from ascensos a where e.nro_emp=a.nro_emp and fec_ascenso<=’31-dic-1999’)
  • 14. Optimización de Consultas - Base de Datos II 14 Algoritmo de Reducción de Codd Aplicado a SQL 3. Transformar los productos cartesianos, asociándolos a las condiciones de reunión, para transformarlos en reuniones, consideramos: e.nro_dpto=d.nro_dpto (emp where fec_nac>=‘1-ene-1984’ and sexo = ‘F’) join (depto where nombre_dpto=‘Informática’) select nro_dpto, nombre_dpto, nro_emp, nombre_emp from emp e, depto d where nombre_dpto = ‘Informática’ and fec_nac>= ‘1-ene-1984’ and sexo = ‘F’ and e.nro_dpto=d.nro_dpto and not exists (select * from ascensos a where e.nro_emp=a.nro_emp and fec_ascenso<=’31-dic-1999’)
  • 15. Optimización de Consultas - Base de Datos II 15 Algoritmo de Reducción de Codd Aplicado a SQL 4. Transformar los cuantificadores universales y existenciales COMPLEMENTO((emp where fec_nac>=‘1-ene-1984’ and sexo = ‘F’) join (depto where nombre_dpto=‘Informática’) join (π nro_emp ascensos where not (fec_ascenso<=’31-dic-1999’))) Considere que la negación del cuantificador existencial resulta en calcular el complemento. select nro_dpto, nombre_dpto, nro_emp, nombre_emp from emp e, depto d where nombre_dpto = ‘Informática’ and fec_nac>= ‘1-ene-1984’ and sexo = ‘F’ and e.nro_dpto=d.nro_dpto and not exists (select * from ascensos a where e.nro_emp=a.nro_emp and fec_ascenso<=’31-dic-1999’)
  • 16. Optimización de Consultas - Base de Datos II 16 Algoritmo de Reducción de Codd Aplicado a SQL 4. Transformar los cuantificadores universales y existenciales Hay que tener cuidado con la división: Note que Rx x.a=y.b equivale a ¬Rx where ¬(x.a=y.b) ¿Qué operación de álgebra es esa doble negación? and not exists (select * from dpto_emp d_e where e.nro_emp=d_e.nro_emp and not exists (select * from dpto d where de.nro_depto=d.nro_depto))
  • 17. Optimización de Consultas - Base de Datos II 17 Algoritmo de Reducción de Codd Aplicado a SQL 5. Proyección final: π nro_emp, nombre_emp, nro_dpto, nombre_dpto (emp where fec_nac>=‘1-ene-1984’ and sexo = ‘F’) join (depto where nombre_dpto=‘Informática’) join (π nro_emp ascensos where not (fec_ascenso<=’31-dic-1999’)) select nro_dpto, nombre_dpto, nro_emp, nombre_emp from emp e, depto d where nombre_dpto = ‘Informática’ and fec_nac>= ‘1-ene-1984’ and sexo = ‘F’ and e.nro_dpto=d.nro_dpto and not exists (select * from ascensos a where e.nro_emp=a.nro_emp and fec_ascenso<=’31-dic-1999’)
  • 18. Optimización de Consultas - Base de Datos II 18 Algoritmo de Reducción de Codd Aplicado a SQL  Aplicamos normalmente el Algoritmo de Reducción de Codd, aplicando la transformación nro_dpto in, por la comparación de atributos que representa: (emp e x depto d where nombre_dpto=‘Informática’) where [NOT] e.nro_dpto=d.nro_depto select nro_emp, nombre_emp from emp e where nro_dpto [NOT] in (select nro_depto from depto a where nombre_dpto = ‘Informática’)
  • 19. Optimización de Consultas - Base de Datos II 19 Traducción de SQL a Algebra Relacional  Descomponiendo la consulta en sus subconsultas y procediendo en un esquema de dividir y conquistar, se puede transformar, cualquier consulta, por más compleja que sea a Álgebra Relacional.  Cada una de las subconsultas obtenidas, llamados bloques de consulta, se podrá optimizar independientemente y luego componer los resultados  Hay que tener especial cuidado en las consultas correlacionada  El resultado de la traducción se puede ver como un árbol o un grafo de la consulta, donde las hojas son las tablas (o resultados intermedios anteriores), y los nodos son los operandos del álgebra
  • 20. Optimización de Consultas - Base de Datos II 20 Optimización Heurística  Se utiliza para modificar la estructura de la representación interna de la consulta  La idea subyacente es buscar el uso de reglas genéricas, que normalmente conducen a una consulta más apropiada  Por ejemplo: Realizar restricciones y proyecciones antes que cualquier operación binaria, se sustenta en el principio que habrán menos datos para las operaciones subsecuentes  No hay “una” heurística, se trata de todos aquellos optimizadores en que se aplican reglas como las mostradas para realizar la optimización  Las reglas se suelen basar en las propiedades de los operadores del álgebra relacional (asociativa, distributiva, conmutativa)
  • 21. Optimización de Consultas - Base de Datos II 21 Reglas Generales de Transformación R1 Cascada de Restricciones σc1 AND c2 AND ... AND cn (R) = σc1(σc2(...(σcN(R))...)) R2 Conmutatividad de Restricciones σc1(σc2(R)) = σc2(σc1(R)) R3 Cascada de Proyecciones πLista1(πLista2(...πListan(R)) = πLista1(R)
  • 22. Optimización de Consultas - Base de Datos II 22 Reglas Generales de Transformación R4 Conmutación de Restricción con Proyección πA1, A2, ... An(σc(R)) = σc(πA1, A2, ... An(R)) R5 Conmutación de Reunión (y Producto Cartesiano) RcS=ScR R6 Conmutación de Restricción con Producto Cartesiano σc(RS) = (σc(R))S
  • 23. Optimización de Consultas - Base de Datos II 23 Reglas Generales de Transformación R7 Conmutación de Proyección con Reunión – πL(RcS) = πA1,...,An(R) c (πB1,...,Bm(S)) R8 Conmutatividad de las operaciones de conjuntos  eson conmutativas; la diferencia no R9 Asociatividad de  x  – Θ representa a cualquiera de ellas – (RΘS)ΘT = RΘ(SΘT)
  • 24. Optimización de Consultas - Base de Datos II 24 Reglas Generales de Transformación R10 Conmutación de Restricción con  y – Θ representa cualquiera de las operaciones de conjuntos σc(RΘS) = (σc(R)) Θ (σc(S)) R11 Conmutación de Proyección con  πL (R S) = (πL (R)) (πL (S)) R12 Conversión de una secuencia (σ x ) a  σc(R x S) = (RcS)
  • 25. Optimización de Consultas - Base de Datos II 25 Algoritmo de Optimización Heurístico  Ahora bien, ¿de qué forma usamos inteligentemente las transformaciones anteriores para obtener una consulta optimizada?  Por ejemplo, podríamos realizar nuestro optimizador tomando decisiones de alcance local, suponiendo que mejora el resultado global: – Que las operaciones más selectivas ejecuten lo antes posible – Que las operaciones con resultados más pequeños, en términos de cantidad de bytes, ejecuten lo antes posible – Ante una operación binaria, seleccionar la más eficiente con respecto a otras equivalente  El resultado estará optimizado pero no necesariamente será óptimo ¿por qué?
  • 26. Optimización de Consultas - Base de Datos II 26 Algoritmo de Optimización Heurístico Usando R1, desagrupar las Restricciones en una cascada de restricciones σc1 AND c2 AND ... AND cn (R) => σc1(σc2(...(σcN(R))...))  Con esta estrategia podríamos realizar las restricciones que retornen menor cantidad de registros antes  Permite usar con más libertad la propiedad de conmutación y asociación  Nótese que las condiciones pueden ser – comparaciones simples A1 Ө‘c’ – entre atributos, no necesariamente de la misma tabla R.A1 Ө S.B1
  • 27. Optimización de Consultas - Base de Datos II 27 Algoritmo de Optimización Heurístico Usando R2, R4, R6 y R10, (conmutación de las restricciones consigo mismas, proyeccciones, producto cartesiano y operadores de conjuntos), mover las Restricciones lo más al principio de la consulta posible  Se basa en el supuesto es que se reduce la cantidad de datos que entrarán a las operaciones subsiguientes  El supuesto es que menos datos, ejecuta más rápido ¿siempre?  Se debe considerar el costo de realizar cada una de las operaciones, cómo se devuelven los datos para el paso siguiente y los métodos de acceso disponibles en cada nivel
  • 28. Optimización de Consultas - Base de Datos II 28 Algoritmo de Optimización Heurístico Usando R5 y R9 (conmutación de producto cartesiano y reunión, y asociación de operadores), mover las hojas de los árboles (las tablas de entrada) con la restricción mayor (con la menor cantidad y tamaño de resultados esperados), lo más al principio posible.  Con esto se pretende llevar las operaciones binarias lo más cercano posible a las restricciones que menor cantidad de resultados se esperen  Se evitar la proliferación de productos cartesianos en lugar de reuniones (por la eficiencia!!!)  ¿Qué métodos existen para hacer un producto cartesiano? ¿y una reunión?
  • 29. Optimización de Consultas - Base de Datos II 29 Algoritmo de Optimización Heurístico Usando R12, transformar restricciones y productos cartesianos en reuniones σc(R x S) = (RcS)  Hay métodos más eficientes de realizar reuniones que productos cartesianos (fuerza bruta)  Por ejemplo, Mishra y Eich, en “Join processing on relational databases”, publicado en ACM Computer Survey Vol.24 nº1 de Marzo de 1992, analizaba 46 técnicas distintas, unos más eficientes que otros, en determinadas circunstancias
  • 30. Optimización de Consultas - Base de Datos II 30 Algoritmo de Optimización Heurístico Usando R3, R4, R7 y R11 (conmutación de la proyección), mover las proyecciones lo más al principio posible  Nuevamente calculando transportar la menor cantidad de datos posibles al próximo operador  Se debe considerar que esa conmutación no siempre es válida, por ejemplo, si eliminamos alguna columna que se use en operaciones posteriores
  • 31. Optimización de Consultas - Base de Datos II 31 Algoritmo de Optimización Heurístico  Hemos dado un ejemplo de una heurística que parece razonable, pensando en forma analítica, para la optimización de una consulta  No suele ser óptimo el resultado porque se puede estar eliminando caminos más eficientes para las operaciones subsiguientes  Por eso decimos que las decisiones locales pueden afectar el resultado global, no alcanzándose el óptimo
  • 32. Optimización de Consultas - Base de Datos II 32 Optimizador Exhaustivo o Sistemático  ¿Qué pasa si en lugar de evaluar siguiendo reglas se intenta evaluar todos los posibles planes de ejecución?  El resultado será óptimo, pero solamente podrá saberse luego de ejecutada todas las posibles variantes de los planes de ejecución  Debemos tener una estrategia para poder determinar cuál es el mejor plan posible  Para ello debemos contar una estimación de que costo tendrá el ejecutar cada uno de los planes, y determinar quien es el mejor plan  Al ser un costo estimado, el plan de ejecución seleccionado, no necesariamente será el óptimo, aunque seguramente sea mejor que el haber aplicado heurísticas
  • 33. Optimización de Consultas - Base de Datos II 33 Optimización basada en costos  El costo de una consulta se mide en base a: – Costo del acceso a memoria secundaria donde residen los datos – Costo del acceso a memoria secundaria de resultados intermedios y áreas de trabajo – Costo de procesamiento – Costo en el uso de memoria principal – Costo de comunicaciones, resultante de llevarle los datos al programa de aplicación
  • 34. Optimización de Consultas - Base de Datos II 34 Optimización basada en costos (cont.)  Se usa toda posible información concerniente a tamaños y cantidades: – Tamaño de cada archivo – Cantidad de registros – Tamaño del registro – Cantidad de bloques o páginas que ocupa – Métodos de acceso y sus atributos – Cantidad de niveles de cada índice – Número de valores distintos de un atributo – Cardinalidad de la selección – Cantidad de registros que satisfacen una condición de igualdad – Reglas de integridad (dominio, entidad y referencia)
  • 35. Optimización de Consultas - Base de Datos II 35 Algoritmos básicos para los operadores  Mediante los mecanismos de optimización (heurístico o exhaustivos), hemos logrado construir un plan de ejecución  En el plan de ejecución se indica que operaciones algebraicas se deben realizar y en que orden  ¿Hay una única opción para implementar cada uno de los operadores?  ¿Qué debemos considerar? – Métodos de acceso (índices, dispersiones, bitmaps, etc.) – Selectividad/Distribución de los datos – Ordenes de ejecución – Estimación de costos – Utilización de procesamiento paralelo – Anidamiento de operaciones – Subárboles repetidos
  • 36. Implementación de la Restricción  S1: Búsqueda secuencial o por Fuerza Bruta – Leer todos los registros del fichero y comprobar si los valores de sus atributos satisfacen la condición de la restricción – Se necesita leer la mitad de registros en promedio  S2: Bipartición o Búsqueda Binaria – Si la condición de selección implica una comparación de igualdad sobre un atributo clave según el cual está ordenado el archivo – Orden logarítmico (log2 N)  S3: Uso de un índice primario o una dispersión (hash) – Comparación de igualdad sobre PK con índice primario – Tantas lecturas como niveles del índice o 1 para el hash
  • 37. Implementación de la Restricción (cont.)  S4: Índice primario para múltiples registros – Condición de comparación <, <=, >, >= – Se utiliza el índice para encontrar el primer registro y luego se recorren los siguientes registros (Arbol B*/B+ )  S5: Índices de agrupamiento para múltiples registros – Comparación de igualdad sobre atributo no clave con índice de agrupamiento – Idem anterior  S6: Índices secundarios (Árbol B*/B+) – Un sólo registro si es un campo clave o varios si es no clave – Tantas lecturas como niveles tenga el árbol
  • 38. Implementación de la Restricción (cont.)  S7: Conjunción de restricciones con índice individual – Si en una restricción conjuntiva existe un índice (casos 1 a 6). Luego comprobar el resto de las condiciones.  S8: Conjunción de restricciones con índice compuesto – Si dos o más atributos intervienen en condiciones de igualdad en la condición conjuntiva y existe un índice compuesto sobre los campos combinados  S9: Conjunción de restricciones por intersección de apuntadores a registros – Si de restricciones anteriores se han obtenido punteros a los registros, se pueden intersectar para hallar los que cumplan ambas condiciones – El orden de ejecución es el de la intersección (depende de si vienen o no ordenados
  • 39. Optimización de Consultas - Base de Datos II 39 Implementación de la Restricción (cont.)  S10: Restricciones con índice bitmap – Se buscan el bitmap del valor de búsqueda – Considerar que es de baja capacidad de selección, por lo que retornará tantos resultados como bit en 1 tenga el valor  S11: Conjunción de restricciones con índice bitmap – Se buscan los bitmap de los valores a comparar – Se realiza el AND lógico de los bitmap de cada uno de esos valores. – El orden de ejecución es una lectura por valor, pudiendose despreciar el cálculo del AND en memoria
  • 40. Implementación de la Reunión  Existen una muy buena cantidad de literatura al respecto y por ello la gran cantidad de algoritmos para realizar la reunión  Muchos de ellos son variantes de otros, por lo que veremos los básicos y discutiremos aquellas variantes interesantes  Algunos algoritmos necesitan de pre-procesamiento, como ser ordenar resultados previos o la creación de estructuras auxiliares  Constantemente se proponen nuevos algoritmos, para ambientes especiales, arquitecturas paralelas, etc.  La reunión más común es la dada por la relación PK/FK, resultante de un buen modelado del problema  También es necesario la consideración de reuniones anidadas o estrella  Existen, 4 formas básicas de realizar la reunión: fuerza bruta, bucle único, sort-merge join y hash join.
  • 41. Implementación de la Reunión (cont.)  R1 - Reunión de bucles anidados o Fuerza bruta – Para cada registro de R, obtener todos los registros de S y comprobar la condición de comparación, del atributo A de R, con el B de S: R.A Ө S.B – Se realiza por dos bucles anidados recorriendo cada una de las tablas, de ahí su nombre de fuerza bruta (orden m x n)  R2 - Reunión de bucle único – uso de estructuras de acceso para obtener los registros coincidentes – Si existe un método de acceso para uno de los atributos de reunión (Ej.; S.A), se accede a todos los registros de la tabla R en un bucle y se utiliza la estructura de acceso para acceder a los registros de la tabla S (orden n log n) – Suele ser el método usado para vincular dos tablas por su relación PK/FK, ya que se parte del supuesto que hay un método de acceso directo para la PK
  • 42. Implementación de la Reunión (cont.)  R3 - Reunión por clasificación-fusión o sort-merge join – Si los registros de S y T están clasificados físicamente se usan directamente, sino se ordenan por los atributos a comparar – Es como el apareo de archivos comparando las condiciones de reunión entre los registros  R4 - Reunión por dispersión o hash join – Se dispersan la tabla más pequeña primero – Luego se dispersa la tabla más grande, si hay colisiones se cumple la reunión – Las funciones de hash también son usadas para particionar las tablas a ser reunidas y luego aplicarle alguno de los métodos anteriores (los fragmentos son disjuntos)
  • 43. Optimización de Consultas - Base de Datos II 43 Implementación de la Reunión (cont.)  Existen variantes de los métodos anteriores que buscan optimizar determinadas condiciones de los datos  Se suelen basar en la construcción de estructuras adicionales (índices, etc.), que luego se usan para realizar la reunión  Se usan estructuras como: – árboles T, múltiples elementos por nodo – arboles kd, multidimensionales, k es la dimensión, indexando k claves – árboles Bc, su nodos son compuestos, mantienen pares de valores que reúnen  Los algoritmos suelen ser de la forma siguiente: – Se crea la estructura (el índice) de búsqueda para la tabla más pequeña – Se lee la más grande en un bucle, buscando los valores de reunión en la estructura creada previamente
  • 44. Implementación de la Proyección  Fácil de implantar si se incluye la PK de la tabla, los registros son todos, solamente se eliminan las columnas no presentes en la lista de la proyección  Si no se incluye la PK – Ordenar resultado y eliminar registros repetidos – También se puede utilizar alguna estructura adicional como puede ser una dispersión o un índice
  • 45. Implementación de operadores de conjuntos  Unión, Intersección, Diferencia y Producto Cartesiano – Muy costosas – Especialmente el producto cartesiano, realizable por dos bucles anidados – En éstas se utilizará por ejemplo clasificación-fusión (sort-merge)  Ordenar sobre los mismos atributos  Luego basta con pasar por cada relación – También puede utilizarse alguna estructura auxiliar como una dispersión o un índice
  • 46. Optimización de Consultas - Base de Datos II 46 Implementación de operaciones combinadas  También se suelen combinar algoritmos en la implementación de los operadores, aplicando la propieda asociativa  Normalmente, el plan de ejecución estipula guardar los resultados intermedios (en memoria principal si alcanza, sino en disco), para ser usados en operaciones subsiguientes  Por ejemplo, ¿qué costaría realizar una reunión conjuntamente con alguna restricción adicional, sin necesidad de grabar un archivo temporario?  Un ejemplo de esto es la reunión estrella, que permite tener resultados satisfactorios a la reunión de una tabla con una variedad de tablas referidas por FK de ella  Es normal generar el código de ejecución, encadenando todas las operaciones posibles, de forma de reducir la cantidad de resultados intermedios
  • 47. Optimización de Consultas - Base de Datos II 47 Optimización - Conclusiones  Hemos vistos varias técnicas para elaborar planes de ejecución y sus correspondientes códigos de ejecución  No hay duda que es un componente extremadamente complejo, si es que quiere jactarse de ser eficiente  La cantidad de variantes es impresionante, queda librado a la imaginación de los que implementan el Optimizador
  • 48. Optimización de Consultas - Base de Datos II 48 ¿Dudas?
  • 49. Ejercicio Optimización de Consultas - Base de Datos II 49 SELECT MAT, AÑO, SEM, CI, NOMBRE_MAT,NOMBRE_EST FROM ESTUDIANTES E, MATERIA, M. ÌNSCRIPCION I WHERE E.CI = I.CI AND M.MATERIA = I.MATERIA AND I.AÑO = 2011 AND I.SEM = 1 AND EXISTS (SELECT * FROM CARRERA C, MAT_CARRERA MC WHERE C.CARR = ‘ING.INF’ AND I.MATERIA = MC.MATERIA AND C.CARR = MC.CARR)