Vous êtes sur la page 1sur 62

• Algoritmos para el Procesamiento y Optimización de Consultas

Capítulo 15
Objetivos
• Comprender los fundamentos básicos del procesamiento y la optimización
de consultas como ser:
– Introducción al Procesamiento de Consultas
– Traducir Consultas SQL en Álgebra Relacional
– Algoritmos para Ordenación Externa
– Algoritmos para Operaciones SELECCIÓN y CONCATENACIÓN
– Algoritmos para Operaciones PROYECCIÓN y de CONJUNTOS
– Implementación de Operaciones de Agregación y Concatenaciones Externas
– Concatenación de Operaciones usando Segmentación
– Uso de Heurísticas en la Optimización de Consultas
– Uso de Selectividad y Estimaciones de Costos en la Optimización de Consultas
– Revisión de la Optimización de Consultas en Oracle
– Optimización Semántica de Consultas

Slide 15- 2
Introducción al Procesamiento de
Consultas

• Optimización de consultas:
• – El proceso de elegir una
estrategia de ejecución adecuada para
• Dosprocesar
representaciones
una consulta
internas de una
consulta:
– Árbol de Consultas
– Grafo de Consultas

Slide 15- 3
Introducción al Procesamiento de
Consultas

Slide 15- 4
Traducir Consultas SQL en Álgebra
Relacional

• Bloque de consulta:
• – La unidad básica que se puede traducir en operadores
algebraicos y optimizados
• Un bloque de consulta que contiene una sola expresión
SELECT-FROM-WHERE, así como una cláusula GROUP BY y
HAVING si estas son parte del bloque
• Consultas anidadas dentro de una consulta se identifican
como bloques de consulta separados
• Los operadores de agregación en SQL se deben incluir en el
álgebra extendida

Slide 15- 5
Traducir Consultas SQL en Álgebra
Relacional Apellido1, Nombre
SELECT
FROM EMPLEADO
WHERE Sueldo > (SELECT MAX (Sueldo)
FROM EMPLEADO
WHERE Dno = 5);

SELECT Apellido1, Nombre SELECT MAX (Sueldo)


FROM EMPLEADO FROM EMPLEADO
WHERE Sueldo > C WHERE Dno = 5

π Apellido1, Nombre (σ Sueldo > C (EMPLEADO)) ℱMAX Sueldo (σ Dno = 5 (SALARIO))

Slide 15- 6
Algoritmos para Ordenación
Externa
• Ordenación Externa:
– Se refiere a los algoritmos de ordenamiento que son adecuados para
archivos grandes de registros almacenados en el disco que no se
ajustan por completo a la memoria principal, como la mayoría de los
archivos de bases de datos
• Estrategia Ordenación-Mezcla:
– Comienza por ordenar sub-archivos pequeños (porciones) del archivo
principal y luego mezcla las porciones ordenadas, creando sub-
archivos ordenados más grandes que se mezclan a su vez
– Fase de ordenación: nR = (b/nB)
– Fase de mezclado: dM = Min (nB-1, nR); nP = (logdM(nR))
– nR: número inicial de porciones; b: número de bloques de archivo;
– nB: espacio de búfer disponible; dM: grado de combinación;
– nP: número de pases.

Slide 15- 7
Algoritmos para Ordenación
Externa

Slide 15- 8
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación SELECCIÓN

• Ejemplos :
– (OP1):  Dni = '123456789’ (EMPLEADO)
– (OP2):  NumeroDpto > 5 (DEPARTAMENTO)
– (OP3):  Dno = 5 (EMPLEADO)
– (OP4):  Dno = 5 AND Sueldo > 30000 AND Sexo = ‘F’ (EMPLEADO)
– (OP5):  DniEmpleado = ‘123456789’ AND NumProy = 10 (TRABAJA_EN)

Slide 15- 9
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación SELECCIÓN (cont.):
• Métodos de Búsqueda para Selección Simple:
– S1 Búsqueda lineal (fuerza bruta):
• Recupera cada registro en el archivo y prueba si sus valores de atributo
satisfacen las condiciones de selección
– S2 Búsqueda binaria:
• Si la condición de selección implica una comparación de igualdad en un
atributo clave en el que se ordena el archivo, se puede utilizar la
búsqueda binaria (que es más eficiente que la búsqueda lineal). (Ver
OP1)
– S3 Usar un índice primario o una clave de dispersión para recuperar
un solo registro:
• Si la condición de selección implica una comparación de igualdad en un
atributo clave con un índice primario (o una clave de dispersión), use el
índice principal (o la clave de dispersión) para recuperar el registro

Slide 15- 10
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación SELECCIÓN (cont.):
• Métodos de Búsqueda para Selección Simple:
– S4 Usando un índice primario para recuperar múltiples registros:
• Si la condición de comparación es >, ≥, < o ≤ en un campo clave con índice
primario, use el índice para encontrar el registro que satisfaga la condición de
igualdad correspondiente, luego recupere todos los registros subsiguientes en el
archivo (ordenado)
– S5 Usar un índice de agrupación para recuperar múltiples registros:
• Si la condición de selección implica una comparación de igualdad en un atributo
no clave con un índice de agrupación, use el índice de agrupación para recuperar
todos los registros que satisfagan las condiciones de selección
– S6 Usando un índice secundario (árbol-B+):
• En una comparación de igualdad, este método de búsqueda se puede usar para
recuperar un solo registro si el campo de indexación tiene valores únicos (es una
clave) o para recuperar varios registros si el campo de indexación no es una clave
• Además, se puede usar para recuperar registros en condiciones que involucran >,
• >=, < o <=. (PARA CONSULTAS DE RANGO)

Slide 15- 11
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación SELECCIÓN (cont.):
• Métodos de Búsqueda para Selección Simple:
– S7 Selección conjuntiva:
• Si un atributo involucrado en una sola condición simple en la
condición conjuntiva tiene una ruta de acceso que permite el uso
de uno de los métodos S2 a S6, use esa condición para recuperar
los registros y luego verifique si cada registro recuperado satisface
las condiciones simples restantes en la condición conjuntiva
– S8 Selección conjuntiva usando un índice compuesto:
• Si dos o más atributos están involucrados en condiciones de
igualdad en la condición conjuntiva y existe un índice compuesto
(o estructura hash) en el campo combinado, podemos usar el
índice directamente

Slide 15- 12
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación SELECCIÓN (cont.):
• Métodos de Búsqueda para Selección Compleja :
– S9 Selección conjuntiva por intersección de punteros a registros:
• Este método es posible si los índices secundarios están disponibles en
todos (o algunos de) los campos involucrados en las condiciones de
comparación de igualdad en la condición conjuntiva y si los índices
incluyen punteros a registros (en lugar de punteros a bloques)
• Cada índice se puede usar para recuperar los punteros a registros que
satisfacen la condición individual
• La intersección de estos conjuntos de punteros a registros proporciona
los punteros a registros que satisfacen la condición de conjunción, que
luego se utilizan para recuperar esos registros directamente
• Si solo algunas de las condiciones tienen índices secundarios, cada
registro recuperado se prueba adicionalmente para determinar si
satisface las condiciones restantes

Slide 15- 13
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación SELECCIÓN (cont.):
– Siempre que una condición individual especifique la selección,
solo podemos verificar si existe una ruta de acceso en el
atributo involucrado en esa condición.
• Si existe una ruta de acceso, se utiliza el método correspondiente
a esa ruta de acceso; de lo contrario, se utiliza el enfoque de
búsqueda lineal de "fuerza bruta" del método S1. (Ver OP1, OP2 y
OP3)
– Para las condiciones de selección conjuntiva, cada vez que más
de uno de los atributos involucrados en las condiciones tiene
una ruta de acceso, la optimización de la consulta se debe
hacer para elegir la ruta de acceso que recupere la menor
cantidad de registros de la manera más eficiente
– Condiciones de selección disyuntivas
Slide 15- 14
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación CONCATENACIÓN:
– Concatenación (EQUIJOIN, CONCATENACIÓN NATURAL)
• concatenación bidireccional: concatenación en dos archivos
• p.ej. R A = B S
• concatenaciones de múltiples vías: se une a más de dos archivos
• p.ej. R A = B S C = D T
• Ejemplos:
– (OP6): EMPLEADO Dno = NúmeroDpto DEPARTAMENTO
– (OP7): DEPARTAMENTO DniDirector = Dni EMPLEADO

Slide 15- 15
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación CONCATENACIÓN (cont.):
• Métodos para implementar concatenaciones:
– J1 Concatenación de bucle anidado (fuerza bruta):
• Para cada registro t en R (bucle externo), recupere cada registro s de S
(bucle interno) y pruebe si los dos registros satisfacen la condición de
unión t[A] = s[B]
– J2 Concatenación de bucle simple (Uso de una estructura de acceso
para recuperar los registros coincidentes):
• Si existe un índice (o una clave hash) para uno de los dos atributos de
concatenación, digamos, B o S, recupere cada registro t en R, uno a la
vez, y luego use la estructura de acceso para recuperar directamente
todos los registros coincidentes de S que satisface s[B] = t[A]

Slide 15- 16
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación CONCATENACIÓN (cont.):
• Métodos para implementar concatenaciones:
– J3 Concatenación de ordenación-mezcla:
• Si los registros de R y S se clasifican físicamente (ordenados) por el valor
de los atributos de concatenación A y B, respectivamente, podemos
implementar la concatenación de la forma más eficiente posible
• Ambos archivos se escanean en orden de los atributos de concatenación,
haciendo coincidir los registros que tienen los mismos valores para A y B
• En este método, los registros de cada archivo se escanean solo una vez
para coincidir con el otro archivo, a menos que tanto A como B sean
atributos no clave, en cuyo caso el método debe modificarse
ligeramente

Slide 15- 17
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación CONCATENACIÓN (cont.):
• Métodos para implementar concatenaciones:
– J4 Concatenación de dispersión:
• Los registros de los archivos R y S se procesan dispersamente para el
mismo archivo disperso, utilizando la misma función de dispersión en los
atributos de concatenación A de R y B de S como claves de dispersión
• Un solo pase a través del archivo con menos registros (por ejemplo, R)
dispersa sus registros a los segmentos del archivo de dispersión
• Un único pase a través del otro archivo (S) luego clasifica cada uno de sus
registros en el depósito correspondiente, donde el registro se combina
con todos los registros coincidentes de R

Slide 15- 18
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN

Slide 15- 19
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN

Slide 15- 20
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN

• Implementando la
Operación CONCATENACIÓN (cont.):
• Factores que afectan el rendimiento
de CONCATENACIÓN:
– Espacio de búfer disponible
– Factor de selección CONCATENACIÓN
– Elección de la relación externa VS interna

Slide 15- 21
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación CONCATENACIÓN (cont.):
• Otros tipos de algoritmos CONCATENACIÓN
• Concatenación de dispersión particionada
– Fase de particionamiento:
• Cada archivo (R y S) primero se particiona en M particiones utilizando
una función de dispersión de partición en los atributos de combinación:
• – R1 , R2 , R3 , ...... Rm y S1 , S2 , S3 , ...... Sm
• Número mínimo de almacenamientos intermedios en memoria
necesarios para la fase de partición: M+1
• Se crea un sub-archivo de disco por partición para almacenar las tuplas
para esa partición
– Fase de concatenación o de prueba:
• Implica M iteraciones, una por archivo particionado
• Iteración i implica concatenar particiones Ri y Si.

Slide 15- 22
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación CONCATENACIÓN
(cont.):
• Procedimiento de Concatenación de Dispersión
Particionada:
– Supongamos que Ri es más pequeño que Si
1. Copie los registros de Ri en los búferes de memoria
2. Lea todos los bloques de Si, uno a la vez y cada registro de Si se
usa para buscar un registro coincidente de la partición Si
3. Escribir registro coincidente de Ri después de concatenarse al
registro de Si en el archivo de resultados

Slide 15- 23
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación CONCATENACIÓN (cont.):
• Análisis de costo de concatenación de dispersión de
partición:
1. Leer y escribir cada registro de R y S durante la fase de
partición:
(bR + bS), (bR + bS)
2. Lectura de cada registro durante la fase de concatenación:
(bR + bS)
3. Escribir el resultado de concatenarse:
bRES
• Costo total:
– 3* (bR + bS) + bRES
Slide 15- 24
Algoritmos para Operaciones SELECCIÓN y
CONCATENACIÓN
• Implementando la Operación CONCATENACIÓN (cont.) :
• Concatenación de dispersión híbrida:
– Lo mismo que la concatenación de dispersión particionada, excepto:
• La fase de concatenación de una de las particiones se incluye durante la
fase de partición.
– Fase de particionamiento:
• Asigne buffers para una relación más pequeña: un bloque para cada una
de las particiones M-1, bloques restantes para la partición 1
• Repita para la relación más grande en el paso por S
– Fase de concatenación:
• Las iteraciones M-1 son necesarias para las particiones R2, R3, R4, ...... Rm
y S2, S3, S4, ...... Sm. R1 y S1 se concatenan durante la partición de S1, y
los resultados de concatenar R1 y S1 ya están escritos en el disco al final
de la fase de partición

Slide 15- 25
Algoritmos para Operaciones PROYECCIÓN y
de CONJUNTOS
• Algoritmo para las operaciones PROYECCIÓN (Figura 15.3b)
 < lista de atributos>(R)
1. Si <lista de atributos> tiene una clave de relación R, extraiga
todas las tuplas de R con solo los valores de los atributos en
<lista de atributos>
2. Si <lista de atributos> NO incluye una clave de relación R, las
tuplas duplicadas deben eliminarse de los resultados

• Métodos para eliminar las tuplas duplicadas


1. Ordenamiento
2. Dispersión

Slide 15- 26
Algoritmos para Operaciones PROYECCIÓN y
de CONJUNTOS
• Algoritmo para operaciones de CONJUNTOS
• Operaciones de conjuntos:
– UNIÓN, INTERSECCIÓN, DIFERENCIA y PRODUCTO CARTESIANO
• PRODUCTO CARTESIANO de las relaciones R y S incluye
todas las posibles combinaciones de registros de R y S. El
atributo del resultado incluye todos los atributos de R y S
• Análisis de costos de PRODUCTO CARTESIANO
– Si R tiene n registros y j atributos y S tiene m registros y k
atributos, la relación de resultado tendrá n * m registros y
atributos j + k
• La operación del PRODUCTO CARTESIANO es muy costosa y
debe evitarse si es posible

Slide 15- 27
Algoritmos para Operaciones PROYECCIÓN y
de CONJUNTOS
• Algoritmo para operaciones de CONJUNTOS (cont.)
• UNIÓN (Vea la Figura 15.3c)
– Ordenar las dos relaciones en los mismos atributos
– Escanee y combine ambos archivos ordenados al mismo tiempo,
siempre que exista la misma tupla en ambas relaciones, solo se
conserva uno en los resultados fusionados
• INTERSECCIÓN (Vea la Figura 15.3d)
– Ordenar las dos relaciones en los mismos atributos
– Escanee y combine ambos archivos ordenados al mismo tiempo,
mantenga en los resultados fusionados solo aquellas tuplas que
aparecen en ambas relaciones
• DIFERENCIA R-S (Vea la Figura 15.3e)
– Mantenga en los resultados fusionados solo aquellas tuplas que
aparecen en relación R pero no en relación S

Slide 15- 28
Implementación de Operaciones de
Agregación y Concatenaciones
Externas
• Implementando Operaciones de Agregación:
• Operadores de agregación:
– MIN, MAX, SUM, COUNT y AVG
• Opciones para implementar operadores de agregación:
– Exploración de tabla
– Índice
• Ejemplo:
– SELECT MAX (Sueldo)
– FROM EMPLEADO;
• Si existe un índice (ascendente) en Sueldo para la relación del empleado,
entonces el optimizador podría decidir atravesar el índice para obtener el
valor más grande, lo que implicaría seguir al puntero derecho en cada
nodo índice desde la raíz hasta una hoja

Slide 15- 29
Implementación de Operaciones de
Agregación y Concatenaciones
Externas
• Implementando Operaciones de Agregación (cont.):
• SUM, COUNT y AVG
• Para un índice denso (cada registro tiene una entrada de índice):
– Aplicar el cálculo asociado a los valores en el índice
• Para un índice no denso:
– El número real de registros asociados con cada entrada de índice debe ser
contabilizado
• Con GROUP BY: el operador de agregación debe aplicarse por separado a cada
grupo de tuplas
– Use ordenamiento o dispersión en el grupo de atributos para dividir el archivo
en los grupos apropiados;
– Calcula la función de agregación para las tuplas en cada grupo
• ¿Qué sucede si tenemos un índice agrupado en los atributos de agrupación?

Slide 15- 30
Implementación de Operaciones de
Agregación y Concatenaciones
Externas
• Implementación de la Concatenación Externa:
• Operadores de Concatenación Externa:
– CONCATENACIÓN EXTERNA IZQUIERDA
– CONCATENACIÓN EXTERNA DERECHA
– CONCATENACIÓN EXTERNA COMPLETA
• La concatenación externa completa produce un resultado que es equivalente a la
unión de los resultados de las concatenaciones externas izquierda y derecha
• Ejemplo:
SELECT Apellido1, NombreDpto
FROM (EMPLEADO LEFT OUTER JOIN DEPARTAMENTO
ON Dno = NumeroDpto);
• Nota: El resultado de esta consulta es una tabla de nombres de empleados y sus
departamentos asociados. Es similar a un resultado de concatenación regular, con
la excepción de que si un empleado no tiene un departamento asociado, el
nombre del empleado seguirá apareciendo en la tabla resultante, aunque el
nombre del departamento se indicará como nulo

Slide 15- 31
Implementación de Operaciones de
Agregación y Concatenaciones
Externas
• Implementación de la Concatenación Externa (cont.):
• Modificación de Algoritmos de Concatenación:
– Las concatenaciones de Bucle Anidado u Ordenación-Mezcla se
pueden modificar para implementar la concatenación externa. P. ej.,
• Para la concatenación externa izquierda, use la relación izquierda como la
relación externa y construya el resultado de cada tupla en la relación
izquierda
• Si hay una coincidencia, la tupla concatenada se guarda en el resultado
• Sin embargo, si una tupla externa no coincide, entonces la tupla todavía
se incluye en el resultado, pero se rellena con un valor nulo

Slide 15- 32
Implementación de Operaciones de
Agregación y Concatenaciones
Externas
• Implementación de la Concatenación Externa (cont.):
• Ejecutando una combinación de operadores de álgebra relacional
• Implementar el ejemplo anterior de concatenación externa izquierda
– {Calcular la CONCATENACIÓN de las tablas EMPLEADO y DEPARTAMENTO}
• TEMP1 Apellido1, Nombre (EMPLEADO Dno = NúmeroDpto DEPARTAMENTO)
– {Encontrar las tuplas de EMPLEADO que no aparecen en la CONCATENACIÓN}
• TEMP2   Apellido1 (EMPLEADO) -  Apellido1 (TEMP1)
– {Rellenar cada una de las tuplas de TEMP2 con un campo NombreDpto igual a
NULL}
• TEMP2  TEMP2 x 'null'
– {Aplicar la operación UNIÓN a las tablas temporales para producir el resultado
de la CONCATENACIÓN EXTERNA IZQUIERDA}
• RESULT  TEMP1 U TEMP2
• El costo de la concatenación externa, como se computa anteriormente, incluiría el
costo de los pasos asociados (es decir, concatenación, proyecciones y unión)

Slide 15- 33
Combinando Operaciones usando
Segmentación

• Motivación:
– Una consulta se asigna a una secuencia de operaciones
– Cada ejecución de una operación produce un
resultado temporal
– Generar y guardar archivos temporales en un disco lleva mucho
tiempo y es costoso
• Alternativa:
– Evite construir resultados temporales tanto como sea posible
– Segmente los datos a través de operaciones múltiples: pase el
resultado de un operador anterior al siguiente sin esperar a
completar la operación anterior

Slide 15- 34
Combinando Operaciones usando
Segmentación
• Ejemplo:
– Para una concatenación bidireccional, combine las 2 selecciones en la
entrada y una proyección en la salida con la concatenación
• Generación dinámica de código para permitir que se
segmenten varias operaciones
• Los resultados de una operación de selección se alimentan en
un “Segmento" al algoritmo de concatenación
• También conocido como procesamiento basado en flujo

Slide 15- 35
Uso de Heurísticas en la Optimización de
Consultas
• Proceso de optimización heurística
1. El analizador de una consulta de alto nivel genera una representación
interna inicial;
2. Aplique reglas heurísticas para optimizar la representación interna
3. Se genera un plan de ejecución de consultas para ejecutar grupos de
operaciones en función de las rutas de acceso disponibles en los
archivos involucrados en la consulta

• La principal heurística es aplicar primero las operaciones que reducen el


tamaño de los resultados intermedios
– Por ejemplo, aplicar operaciones SELECCIÓN y PROYECCIÓN antes de
aplicar la operación CONCATENACIÓN u otras operaciones binarias

Slide 15- 36
Uso de Heurísticas en la Optimización de
Consultas
• Árbol de consulta:
– Una estructura de datos de árbol que corresponde a una expresión de
álgebra relacional. Representa las relaciones de entrada de la consulta
como nodos hoja del árbol y representa las operaciones de álgebra
relacional como nodos internos
• Una ejecución del árbol de consulta consiste en ejecutar una operación de
nodo interno siempre que sus operandos estén disponibles y luego
reemplazar ese nodo interno por la relación que resulta de la ejecución de
la operación
• Grafo de consulta:
– Una estructura de datos de grafo que corresponde a una expresión de
cálculo relacional. No indica un orden en qué operaciones realizar
primero. Solo hay un solo grafo correspondiente a cada consulta.

Slide 15- 37
Uso de Heurísticas en la Optimización de
Consultas
• Ejemplo:
– Para cada proyecto ubicado en ‘Gijón’,, recupere el número del proyecto, el
número del departamento de control y el apellido, dirección y fecha de
nacimiento del gerente del departamento..
• Álgebra relacional:
 NumProyecto, NumDptoProyecto, Apellido1,, Direccion, FechaNac
((( ubicaciónProyecto = ‘Gijón’ (PROYECTO)) NumDptoProyecto = NúmeroDpto
(DEPARTAMENTO)) DniDirector = Dni (EMPLEADO))

• Consulta SQL :
Q2: SELECT P.NumProyecto, P.NumDptoProyecto, E.Apellído1,
E.Dirección, E.FechaNac
FROM PROYECTO AS P, DEPARTAMENTO AS D, EMPLEADO AS E
WHERE P.NumDptoProyecto = D.NúmeroDpto AND
D.DniDirector = E.Dni AND P.UbicaciónProyecto = 'Gijón';

Slide 15- 38
Uso de Heurísticas en la Optimización de
Consultas

Slide 15- 39
Uso de Heurísticas en la Optimización de
Consultas
• Optimización Heurística de los Árboles de Consulta:
– La misma consulta podría corresponder a muchas expresiones de
álgebra relacional diferentes y, por lo tanto, a muchos árboles de
consulta diferentes
– La tarea de optimización heurística de los árboles de consulta es
encontrar un árbol de consulta final que sea eficiente para ejecutar
• Ejemplo:
Q: SELECT Apellido1
FROM EMPLEADO, TRABAJA_EN, PROYECTO
WHERE NombreProyecto = ‘Aquarius’ AND NumProyecto = Pno AND
DniEmpleado = Dni AND FechaNac > ‘1957-12-31’;

Slide 15- 40
Uso de Heurísticas en la Optimización de
Consultas

Slide 15- 41
Uso de Heurísticas en la Optimización de
Consultas

Slide 15- 42
Uso de Heurísticas en la Optimización de
Consultas
• Reglas Generales de Transformación para Operaciones de Álgebra
Relacional:
1. Cascada de : Una condición de selección conjuntiva se puede dividir en
una cascada (secuencia) de operaciones  individuales:
–  c1 AND c2 AND ... AND cn(R) = c1 (c2 (...(cn(R))...) )
2. Conmutatividad de : La operación  es conmutativa:
– c1 (c2(R)) = c2 (c1(R))
3. Cascada de : En una cascada (secuencia) de operaciones , todas menos
la última pueden ser ignoradas:
– Lista1 (Lista2 (...(Listan(R))...) ) = Lista1(R)
4. Conmutar  con : si la condición de selección c solo incluye los atributos
A1, ..., An en la lista de proyección, las dos operaciones se pueden
conmutar:
– A1, A2, ..., An (c (R)) = c (A1, A2, ..., An (R))
Slide 15- 43
Uso de Heurísticas en la Optimización de
Consultas
• Reglas Generales de Transformación para Operaciones de Álgebra Relacional
(cont.):
5. Conmutatividad de (y x): la operación es conmutativa como es la operación x :
– R C S = S C R; R x S = S x R
6. Conmutar  con (o x): si todos los atributos en la condición de selección c
involucran solo los atributos de una de las relaciones que se unen -por ejemplo, R,
las dos operaciones se pueden conmutar de la siguiente manera:
– c ( R S ) = (c (R)) S
• Alternativamente, si la condición de selección c se puede escribir como (c1 y c2),
donde la condición c1 solo involucra los atributos de R y la condición c2 involucra
solo los atributos de S, las operaciones conmutan de la siguiente manera:
– c ( R S ) = (c1 (R)) (c2 (S))

Slide 15- 44
Uso de Heurísticas en la Optimización de
Consultas
• Reglas Generales de Transformación para Operaciones de Álgebra
Relacional (cont.):
7. Desplazamiento de  con (o x): supongamos que la lista de proyección
es L = {A1, ..., An, B1, ..., Bm}, donde A1, ..., An son atributos de R y B1,. ..,
Bm son atributos de S. Si la condición de concatenación c solo incluye
atributos en L, las dos operaciones se pueden conmutar de la siguiente
manera:
– L ( R S ) = (A1, ..., An (R)) C ( B1, ..., Bm (S))
C
• Si la condición de unión C contiene atributos adicionales que no están en
L, estos deben agregarse a la lista de proyección, y se necesita una
operación  final

Slide 15- 45
Uso de Heurísticas en la Optimización de
Consultas
• Reglas Generales de Transformación para Operaciones de
Álgebra Relacional (cont.):
8. Conmutatividad de las operaciones de conjunto: las
operaciones de conjunto U y ∩ son conmutativas, pero "-" no
lo es
9. Asociatividad de , x, U y ∩: estas cuatro operaciones son
individualmente asociativas; es decir, si  representa
cualquiera de estas cuatro operaciones (a lo largo de la
expresión), tenemos
– (R  S)T = R (S T)
10.Conmutación  con operaciones de conjuntos: la operación 
conmuta con U, ∩ y -. Si  representa cualquiera de estas tres
operaciones, tenemos
– c ( R  S ) = (c (R))  (c (S))

Slide 15- 46
Uso de Heurísticas en la Optimización de
Consultas
• Reglas Generales de Transformación para Operaciones de Álgebra
Relacional (cont.):
• La  operación conmuta con U L ( R
U S ) = (L (R)) υ (L (S))

• Conversión de una secuencia (, x) en : Si la condición c de una  que


sigue un x corresponde a una condición de concatenación, convierta la
secuencia (, x) en una como sigue:

• (C (R x S)) = (R C S)

• Otras transformaciones

Slide 15- 47
Uso de Heurísticas en la Optimización de
Consultas
• Esquema de Algoritmo de Optimización Algebraica Heurística:
1. Usando la regla 1, divide cualquier operación de selección con
condiciones conjuntivas en una cascada de operaciones seleccionadas
2. Usando las reglas 2, 4, 6 y 10 con respecto a la conmutatividad de selección con
• otras operaciones, mueva cada operación de selección tan abajo en el árbol
de
•consultas como sea permitido por los atributos involucrados en la condición de
selección
3. Utilizando la regla 9 relativa a la asociatividad de las operaciones
binarias,
• reorganice los nodos hoja del árbol para que las relaciones de nodo hoja con
las
•operaciones de selección más restrictivas se ejecuten primero en
la representación de árbol de consulta
4. Usando la Regla 12, combine una operación de Producto Cartesiano con una
operación de selección posterior en el árbol en una operación de concatenación
5. Utilizando las reglas 3, 4, 7 y 11 relativas a la cascada de proyección y el
• desplazamiento de proyección con otras operaciones, desglose y mueva listas
de
•atributos de proyección por el árbol en la medida de lo posible mediante laSlide 15- 48
creación de nuevas operaciones de proyección según sea necesario
Uso de Heurísticas en la Optimización de
Consultas
• Resumen de Heurísticas para Optimización Algebraica:
1. La principal heurística es aplicar primero las operaciones que
reducen el tamaño de los resultados intermedios
2. Realice las operaciones de selección lo antes posible para
reducir el número de tuplas y realizar las operaciones de
proyección lo antes posible para reducir el número de
atributos. (Esto se hace moviendo las operaciones de selección
y proyección lo más abajo del árbol posible)
3. Las operaciones de selección y concatenación que son más
restrictivas deben ejecutarse antes de otras operaciones
similares. (Esto se hace reordenando los nodos de las hojas del
árbol entre ellos y ajustando el resto del árbol de forma
apropiada)

Slide 15- 49
Uso de Heurísticas en la Optimización de
Consultas
• Planes de Ejecución de Consultas
– Un plan de ejecución para una consulta de álgebra relacional consiste
en una combinación del árbol de consulta de álgebra relacional y la
información sobre los métodos de acceso que se utilizarán para cada
relación, así como los métodos que se utilizarán para calcular los
operadores relacionales almacenados en el árbol
– Evaluación materializada: el resultado de una operación se almacena
como una relación temporal
– Evaluación segmentada: como resultado de la producción de un
operador, se envía al siguiente operador en secuencia

Slide 15- 50
Uso de Selectividad y Estimaciones de Costos
en la Optimización de Consultas
• Optimización de consultas basada en costos:
– Estime y compare los costos de ejecución de una consulta utilizando
diferentes estrategias de ejecución y elija la estrategia con el menor
costo estimado
– (Compare con la optimización de consultas heurísticas)

• Cuestiones
– Función de costo
– Número de estrategias de ejecución a considerar

Slide 15- 51
Uso de Selectividad y Estimaciones de Costos
en la Optimización de Consultas
• Componentes de Costo para la Ejecución de Consultas:
1. Costo de acceso al almacenamiento secundario
2. Costo de almacenamiento
3. Costo de cálculo
4. Costo de uso de memoria
5. Costo de comunicación

• Nota: Diferentes sistemas de bases de datos pueden


enfocarse en diferentes componentes de costos

Slide 15- 52
Uso de Selectividad y Estimaciones de Costos
en la Optimización de Consultas
• Información de Catálogo Utilizada en las Funciones de Costos
– Información sobre el tamaño de un archivo
• número de registros (tuplas) (r),
• tamaño de registro (R),
• número de bloques (b)
• factor de bloqueo (bfr)
– Información sobre índices y atributos de indexación de un archivo
• Número de niveles (x) de cada índice multinivel
• Número de bloques de índice de primer nivel (bI1)
• Número de valores distintos (d) de un atributo
• Selectividad (sl) de un atributo
• Cardinalidad de selección (s) de un atributo. (s = sl * r)

Slide 15- 53
Uso de Selectividad y Estimaciones de Costos
en la Optimización de Consultas
• Ejemplos de Funciones de Costo para SELECCIÓN
• S1. Enfoque de búsqueda lineal (fuerza bruta):
– CS1a = b;
– Para una condición de igualdad en una clave, CS1a = (b/2) si se
encuentra el registro; de otra manera CS1a = b.
• S2. Búsqueda binaria:
– CS2 = log2b + (s/bfr) –1
– Para una condición de igualdad en un atributo único (clave), CS2 = log2b
• S3. Usar un índice primario (S3a) o una clave de dispersión (S3b) para
recuperar un solo registro
– CS3a = x + 1; CS3b = 1 para dispersión estática o lineal;
– CS3b = 1 para dispersión extensible;

Slide 15- 54
Uso de Selectividad y Estimaciones de Costos
en la Optimización de Consultas
• Ejemplos de Funciones de Costo para SELECCIÓN (cont.)
• S4. Usar un índice de ordenamiento para recuperar múltiples registros:
– Para la condición de comparación en un campo clave con un índice de
ordenamiento, CS4 = x + (b/2)
• S5. Usar un índice de agrupación para recuperar múltiples registros:
– CS5 = x + ┌ (s/bfr) ┐
• S6 . Usando un índice secundario (Árbol-B+) :
– Para una comparación de igualdad, CS6a = x + s;
– Para una condición de comparación como >, <, >=, o <=,
– CS6a = x + (bI1/2) + (r/2)

Slide 15- 55
Uso de Selectividad y Estimaciones de Costos
en la Optimización de Consultas
• Ejemplos de Funciones de Costo para SELECCIÓN (cont.)
• S7. Selección conjuntiva:
– Usa S1 o uno de los métodos S2 a S6 para resolver
– Para este último caso, use una condición para recuperar los
registros y luego verifique en el búfer de memoria si cada
registro recuperado satisface las condiciones restantes en la
conjunción
• S8. Selección conjuntiva usando un índice compuesto:
– Selección conjuntiva usando un índice compuesto

• Ejemplos de uso de las funciones de costos


Slide 15- 56
Uso de Selectividad y Estimaciones de Costos
en la Optimización de Consultas
• Ejemplos de Funciones de Costo para
CONCATENACIÓN
– Selectividad de concatenación (js)
– js = | (R C S) | / | R x S | = | (R C S) | / (|R| * |S|)
• Si la condición C no existe, js = 1;
• Si ninguna tupla de las relaciones satisface la condición C, js = 0;
• Generalmente, 0 <= js <= 1;
• Tamaño del archivo de resultados después de la
operación de concatenación
– | (R C S) | = js * |R| * |S |

Slide 15- 57
Uso de Selectividad y Estimaciones de Costos
en la Optimización de Consultas
• Ejemplos de Funciones de Costo para CONCATENACIÓN
(cont.)
• J1. Concatenación de bucle anidado:
– CJ1 = bR + (bR*bS) + ((js* |R|* |S|)/bfrRS)
– (Use R para el bucle externo)
• J2. Concatenación de bucle único (utilizando una estructura
de acceso para recuperar los registros coincidentes)
– Si existe un índice para el atributo de concatenación B de S con
niveles de índice xB, podemos recuperar cada registro s en R y
luego usar el índice para recuperar todos los registros t de S que
satisfacen t[B] = s[A]
– El costo depende del tipo de índice
Slide 15- 58
Uso de Selectividad y Estimaciones de Costos
en la Optimización de Consultas
• Ejemplos de Funciones de Costo para CONCATENACIÓN (cont.)
• J2. Concatenación de bucle único (cont.)
– Para un índice secundario,
• CJ2a = bR + (|R| * (xB + sB)) + ((js* |R|* |S|)/bfrRS);
– Para un índice de agrupamiento,
• CJ2b = bR + (|R| * (xB + (sB/bfrB))) + ((js* |R|* |S|)/bfrRS);
– Para un índice primario,
• CJ2c = bR + (|R| * (xB + 1)) + ((js* |R|* |S|)/bfrRS);
– Si existe una clave de partición para uno de los dos atributos de
concatenación, B de S
• CJ2d = bR + (|R| * h) + ((js* |R|* |S|)/bfrRS);
• J3. Concatenación de ordenación-mezcla:
• CJ3a = CS + bR + bS + ((js* |R|*|S|)/bfrRS);
• (CS: Costo por ordenar archivos)

Slide 15- 59
Uso de Selectividad y Estimaciones de Costos
en la Optimización de Consultas
• Consultas de Relaciones Múltiples y Ordenación de Concatenación
– Una consulta que se una a n relaciones tendrá n-1 operaciones de concatenación, y por
lo tanto puede tener un gran número de órdenes de concatenación diferentes cuando
aplicamos las reglas de transformación algebraica
– Los optimizadores de consultas actuales generalmente limitan la estructura de un árbol
de consultas (de concatenación) al de los árboles de profundidad izquierda (o derecha).

• Árbol profundo izquierdo:


– Un árbol binario donde el hijo correcto de cada nodo no hoja es siempre una relación
base
• Sujeto a la segmentación
• Podría utilizar cualquier ruta de acceso en la relación base (el hijo correcto) al
ejecutar la concatenación

Slide 15- 60
Revisión de la Optimización de Consultas en
Oracle
• Oracle DBMS V8
– Optimización de consultas basadas en reglas: el optimizador elige
planes de ejecución basados en operaciones clasificadas
heurísticamente
• (Actualmente está siendo eliminado)
– Optimización de consultas basada en costos: el optimizador examina
rutas de acceso alternativas y algoritmos de operadores y elige el
plan de ejecución con el menor costo estimado
• El costo de consulta se calcula en función del uso estimado de recursos
como E/S, CPU y memoria necesaria
– Los desarrolladores de aplicaciones podrían especificar sugerencias
para el optimizador de consultas ORACLE
– La idea es que un desarrollador de aplicaciones pueda conocer más
información sobre los datos

Slide 15- 61
Optimización Semántica de
Consultas
• Optimización Semántica de Consultas:
– Utiliza las restricciones especificadas en el esquema de la base de datos para
modificar una consulta en otra consulta que sea más eficiente de ejecutar
• Considere la siguiente consulta SQL,
SELECT E.Apellido1, M.Apellido1
FROM EMPLEADO AS E, EMPLEADO AS M
WHERE E.SuperDni = M.Dni AND E.Sueldo > M.Sueldo
• Explicación:
– Supongamos que tenemos una restricción en el esquema de la base de datos
que establece que ningún empleado puede ganar más que su supervisor
directo. Si el optimizador semántico de consultas comprueba la existencia de
esta restricción, no necesita ejecutar la consulta porque sabe que el resultado
de la consulta estará vacío. Las técnicas conocidas como demostración de
teoremas se pueden usar para este propósito

Slide 15- 62

Vous aimerez peut-être aussi