Procesamiento de consultas (capítulo 13 y 14 del libro) El procesamiento de consulta corresponde a todos los procesos relacionados con la extracción de datos en una base de datos, incluyendo la traducción de consultas expresadas en DML a operaciones para realizar en el nivel físico del sistema, así como transformaciones de optimización de consultas y la evaluación general. Visión general Los pasos básicos para el procesamiento de una consulta son: 1. Análisis y traducción 2. Optimización 3. Evaluación Los pasos pueden verse en la siguiente gráfica: Una consulta debe ser traducida a una forma utilizable. SQL es apropiado para los humanos pero no para procesamiento interno directo. Más apropiada es el álgebra relacional extendida. Estrategias de procesamiento Una consulta básica select saldo Procesamiento de consultas (capítulo 13 y 14 del libro) 1
from cuenta where saldo<2500 puede expresarse con álgebra relacional de estas maneras: s saldo<2500 (Π saldo (cuenta)) Π saldo (s saldo<2500 (cuenta)) La consulta deberá utilizarse para generar un plan de ejecución como el siguiente: No siempre se construye el plan de manera tan lineal. Una consulta SQL podría tener partes muy complejas por lo que el plan bien podría tener forma de árbol. Las consultas deben ser optimizadas. Para ello es necesario hacer un estimado sobre el costo de una consulta. En el ejemplo anterior, se vieron dos expresiones de álgebra de relaciones, donde cada una podría tener un costo diferente. Si se tiene un índice para cuenta que incluye saldo, es preferible usarlo, ya que al final sólo se proyectará dicho atributo. El mayor costo suele ser el acceso a disco, pues se trata de sistemas mecánicos (salvo que sean unidades de estado sólido, aunque también consumen un tiempo considerable). Para medir el costo de acceso, se utiliza el término número de transferencias de bloques. Se asume que cada transferencia de bloque consume el mismo tiempo, aunque suelen ser tiempos variables sujetos a la geometría del disco y posición de los bloques. Es necesario distinguir sobre acceso E/S secuencial donde los bloques son contiguos, y los E/S aleatoria, donde no lo son, por lo que se deberá estar reubicando el cabezal de lectura por cada bloque. También es necesario distinguir entre operaciones de lectura y las de escritura, pues las últimas ocupan más tiempo. Procesamiento de consultas (capítulo 13 y 14 del libro) 2
Se deberá, entonces, estimar: Número de operaciones de búsqueda realizadas Número de bloques leídos Número de bloques escritos Se deberán multiplicar estos valores por los tiempos medios estimados para cada una de esas operaciones. Existen diversos algoritmos básicos que están detallados en la bibliografía del curso: Operación selección Búsqueda binaria Búsqueda lineal Selecciones con índices Selecciones con comparación Selecciones complejas Ordenación Reunión (producto cartesiano) Con bucle anidado Bucle anidado por bloques Reunión en bucle anidado indexada Reunión por mezcla Por asociación Reuniones complejas Otras operaciones Eliminación de duplicados Proyección Operaciones sobre conjuntos Reunión externa Procesamiento de consultas (capítulo 13 y 14 del libro) 3
Evaluación de expresiones Una expresión debe evaluarse, una operación a la vez, en un orden apropiado. Sin embargo, a menos que la expresión sea muy simple, va a ser necesario construir relaciones (tablas) temporales y escribirlas en disco. A esto se le llama materialización, pero queda claro que tienen un costo considerable. El otro enfoque es conocido como cauce, en el cual los resultados de una operación son pasados a la siguiente, sin necesidad de almacenar. Materialización Considere la siguiente expresión: Π nombre-cliente (s saldo<2500 (cuenta) cliente) Su plan de evaluación sería el siguiente: Se deberá empezar por el punto más bajo, generando las relaciones temporales que se van grabando en disco, con los costos que ello conlleva. También podría utilizarse memoria, si está disponible, reduciéndose el tiempo pero utilizando un recurso muy valioso. Si se están efectuando varias consultas de manera concurrente, podría ser prohibitivo. Encausamiento El encausamiento va conectando directamente las salida de una operación con la entrada de otra. Es decir, cada tupla que va resultado de una operación se introduce a la entrada de otra operación. Para un Procesamiento de consultas (capítulo 13 y 14 del libro) 4
ejemplo como el aquí descrito, podría ser fácil de entender. Equivalencia de expresiones y transformaciones Se dice que dos expresiones del álgebra relacional son equivalentes si generan el mismo conjunto de tuplas, dada una base de datos. Una regla de equivalencia dice que las expresiones de dos formas son equivalentes. Una puede sustituir a la otra. 1. Las operaciones de selección conjuntivas pueden dividirse en una secuencia de selecciones individuales, es decir, cascada de s. σ θ1 θ2 (E) = σ θ1 ( σ θ2 (E) ) 2. Las operaciones de selección son conmutativas σ θ1 ( σ θ2 (E) ) = σ θ2 ( σ θ1 (E) ) 3. Solo son necesarias las últimas operaciones de una secuencia de operaciones de proyección. Las demás pueden omitirse. Esta es conocida como cascada de Π. Π L1 ( Π L2 (...(Π Li ( E ))...))=Π L1 (E) 4. Las selecciones pueden combinarse con los productos cartesianos y las reuniones zeta (definición de reuniones zeta o producto natural). σ θ (E 1 E 2 ) = E 1 θ E 2 σ θ1 (E 1 θ2 E 2 ) = E 1 θ1 θ2 E 2 ) 5. Las operaciones de reunión zeta son conmutativas. E 1 θ E 2 = E 2 θ E 1 6. Las operaciones de reunión natural son asociativas (E 1 E 2 ) E 3 = E 1 (E 2 E 3 ) 7. La operación de selección se distribuye por la operación de reunión zeta bajo las dos condiciones siguientes: a. Se distribuye cuando todos los atributos de la selección θ 0 implican unicamente los atributos de una de las expresiones que se están reuniendo. Procesamiento de consultas (capítulo 13 y 14 del libro) 5
σ θ0 (E 1 θ E 2 ) = (σ θ0 (E 1 )) θ E 2 b. Se distribuye cuando la condición de selección θ 1 implica únicamente los atributos de E 1 y θ 2 implica únicamente los atributos de E 2. σ θ1 θ2 (E 1 θ E 2 ) = (σ θ1 (E 1 )) θ (σ θ2 (E 2 )) 8. La operación proyección se distribuye por la operación de reunión zeta bajo las condiciones siguientes. a. Sean L 1 y L 2 atributos de E 1 y de E 2, respectivamente. Supóngase que la condición de reunión θ implica únicamente los atributos de L 1 È L 2. Entonces, Π L1ÈL2 ( E 1 θ E 2 ) = (Π L1 (E 1 ) θ (Π L2 (E 2 ) b. Considérese una reunión E 1 θ E 2. Sean L 1 y L 2 conjuntos de atributos de E 1 y E 2, respectivamente. Sean L 3 los atributos de E 1 que están implicados en la condición de reunión θ, pero que no están en L 1 È L 2, y sean L 4 los atributos de E 2 que están implicados en la condición de reunión θ, pero que no están en L 1 È L 2. Entonces, Π L1ÈL2 ( E 1 θ E 2 ) = Π L1ÈL2 ( (Π L1ÈL3 (E 1 )) θ (Π L2ÈL4 (E 2 )) 9. Las operaciones de conjuntos unión e intersección son conmutativas. E 1 È E 2 = E 2 È E 1 E 1 E 2 = E 2 E 1 La diferencia de conjuntos no es conmutativa. 10. La unión y la intersección de conjuntos son asociativas. (E 1 È E 2 ) È E 3 = E 1 È (E 2 È E 3 ) (E 1 E 2 ) E 3 = E 1 (E 2 E 3 ) 11. La operación de selección se distribuye por las operaciones de unión, intersección y diferencia de conjuntos. σ P (E 1 E 2 ) = σ P (E 1 ) σ P (E 2 ) σ P (E 1 E 2 ) = σ P (E 1 ) E 2 12. La operación de proyección se distribuye por la operación unión. Procesamiento de consultas (capítulo 13 y 14 del libro) 6
Π L ( E 1 È E 2 ) = Π L ( E 1 ) È Π L ( E 2 ) Elección de los planes de evaluación Para escoger un plan de evaluación para una expresión de consulta se podría escoger para cada operación el algoritmo más económico para evaluarla. No siempre las operaciones menos costosas son las óptimas, pues ciertas combinaciones de operaciones requieren algoritmos no tan económicos para que su combinación resulte óptima. Optimización basada en el coste Este tipo de optimizadores generan una gama de planes de evaluación a partir de la consulta empleando reglas de equivalencia y eligen el costo mínimo. Para consultas complejas se puede obtener un número grande de planes. Existen diversas técnicas y algoritmos para elegir ciertas rutas en la generación de dichos planes, a fin de no tener que generar todos los posibles planes. Con la optimización basada en coste, la propia optimización puede tener un costo considerable. Optimización heurística Existen diversas reglas heurísticas (criterios) para la transformación de consultas: Llevar a cabo las operaciones de selección tan pronto sea posible. Llevar a cabo las proyecciones tan pronto sea posible. Procesamiento de consultas (capítulo 13 y 14 del libro) 7