Introducción
Cambiar el orden de las operaciones dentro de una misma consulta provee diferentes estrategias para su ejecución.
El principal rol de las capa de optimización (u optimizador) es encontrar el ordenamiento 'óptimo' de operaciones para una consulta dada.
¿Es realmente óptimo?
Objetivos:
- Evitar malas estrategias
- Acercarse a una estrategia óptima
Encontrar la estrategia "óptima": Requiere la predicción de los costos de ejecución de los distintos candidatos.
Optimización de consultas
I -Es el proceso de producir un QEP (Query Execution Plan) que representa una estrategia de ejecución para la consulta.
II - Es el proceso de selección del plan de evaluación de las consultas mas eficientes de entre las muchas estrategias generalmente disponibles para el procesamiento de una consulta dada, especialmente si la consulta es compleja.
Un optimizador de consultas es usualmente visto como 3 componentes:
- Un espacio de búsqueda
- Un modelo de costos
- Una estrategia de búsqueda
Importancia
Crear un plan de evaluación de consultas que minimice el costo de la evaluación de consultas a través de la optimación de la misma.
Optimizacion global
El compilador de SQL funciona en tres fases, que ayuda a producir una estrategia de acceso optima para evaluar una consulta que hace referencia a una fuente de datos remota. Estas fases son analisis de envio, optimizacion global y generacion de SQL remoto.
El objetivo de la optimizacion global es producir un plan de acceso que optimiza las operaciones de consulta en todas las fuentes de datos globalmente, en todo el sistema federado. un plan de acceso que es optimo globalmente tiene como minimo un coste global de ejecucion en una sistema federado. la fase de generacion de SQL remoto convierte a la inversa el plan optimo globalmente en fragmentos de consulta que se ejecutan como fuentes de datos individuales.
Dada una consulta algebraica sobre fragmentos, el objetivo de esta capa es hallar una estrategia de ejecución para la consulta cercana a la óptima. La estrategia de ejecución para una consulta distribuida puede ser descrita con los operadores del álgebra relacional y con primitivas de comunicación para transferir datos entre nodos. Para encontrar una buena transformación se consideran las características de los fragmentos, tales como, sus cardinalidades. Un aspecto importante de la optimización de consultas es el ordenamiento de juntas, dado que algunas permutaciones de juntas dentro de la consulta pueden conducir a un mejoramiento de varios órdenes de magnitud. La salida de la capa de optimización global es una consulta algebraica optimizada con operación de comunicación incluidas sobre los fragmentos.
Optimización Local de Consultas
El trabajo de la última capa se efectúa en todos los nodos con fragmentos involucrados en la consulta. Cada subconsulta que se ejecuta en un nodo, llamada consulta local, es optimizada usando el esquema local del nodo. Hasta este momento, se pueden eligen los algoritmos para realizar las operaciones relacionales.
No hay comentarios:
Publicar un comentario