BASES DE DATOSOptimización de consultas distribuidas
Optimization global de consultas Optimization local de consultas
Optimización de consultasProceso de selección del plan de evaluación de las consultas más eficientes de entre las distintas
estrategias disponibles.Aspectos que intervienen en la optimización de
consultas:-Hallar una expresión a nivel de álgebra relacional
equivalente a la dada, pero más eficiente.-Determinar el algoritmo a utilizar para cada operación.-Necesidad de estimar el coste de las operaciones.-Información estadística en el catálogo. -Estimación de coste de resultados intermedios.
El coste de una consulta se puede expresar:
• El tiempo de acceso a almacenamiento secundario.
• El tiempo de CPU para ejecutar la consulta.• El tiempo de comunicación (BD distribuidas).
El tiempo de acceso dependerá:Del volumen de datos sobre el cuál debe
actuar (número y tamaño de las tulpas).De la organización física (existencia de
índices, agrupamientos, etc.) De su localización (memoria principal o
dispositivo externo).Del tamaño del buffer de memoria principal
que se dedica a almacenar las tuplas mientras se ejecutan los operaciones sobre ellas.
EJEMPLO DE LA NECESIDAD DE OPTIMIZARTablas de “suministradores” (S) y
“pedidos”(P) con 100 suministradores y 10.000 pedidos.Consideraremos que sólo 50 tuplas de P
corresponden al artículo P2 (se hace pedido por artículo).
Consulta: “Obtener los nombres de los suministradores que nos sirven el artículo P2”.
S (S#, NOMBRE,…)P (P#, S#, A#, UNIDADES,…)
SELECT DISTINCT S.NOMBREFROM S, P WHERE S.S#=P.S#AND P.A#=”P2”;
El producto cartesiano S x P 100 x 10.000 = 1.000.000 de tuplas leídas y almacenadas en memoria intermedia (probablemente).
De la igualdad de join 1.000.000 leídas y 10.000 tuplas escritas en memoria intermedia.
Selección según la cláusula WHERE, 10.000 tuplas leídas, resultado reducido a 50 tuplas.
Realizar la proyección sobre S.NOMBRE, dando como
resultado un máximo de 50 tuplas.
SELECT DISTINCT S.NOMBREFROM S, P WHERE S.S#=P.S# AND P.P#=”P2”;πS.NOMBRE(σA#=”P2”(σS.S#=P.S#(S x P)))
Equivalencia algebraica:
Seleccionar en P las tuplas de la pieza P2.Lectura de 10.000 tuplas, resultado: 50 tuplas.
JOIN de la tabla anterior con la tabla S Lectura de 100 tuplas. Prod. Cart.=100x50=
5000 tuplas. Resultado: 50 tuplas.
Proyección sobre S.NOMBRE. Resultado máximo de 50 tuplas.
SELECT DISTINCT S.NOMBREFROM S, P WHERE S.S#=P.S# AND
P.A#=”P2”;πS.NOMBRE(σS.S#=P.S#(S x (σA#=”P2”(P))))
Si consideramos el “rendimiento” como el número de operaciones de E/S de tuplas: El segundo procedimiento es unas 300 veces mejor, ya que el primero realiza 3.010.000 operaciones de E/S frente a 10.100 del segundo.
OPTIMIZACIÓN DE CONSULTASOBJETIVO: Reducir la cantidad de transferencia de datos
por la red. Aplicar una estrategia local de optimización.
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.
EJEMPLO (para la realización de estrategia de optimización global):
Optimización Local de ConsultasEl 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. La optimización local utiliza los algoritmos de sistemas centralizados.
La entrada al optimizador consta de la consulta, el esquema de la base de datos(definiciones de tabla e índice) y las estadísticas de base de datos. Una instrucción SELECTdefine únicamente los siguientes elementos:
El formato del conjunto de resultados. Las tablas que contienen los datos de origen.Esto se especifica en la cláusula FROM.
Cómo se relacionan lógicamente las tablas para la instrucción SELECT.
define en las especificaciones de combinación, que pueden aparecer en la cláusulaWHERE o en una cláusula ONE que sigue a FROM.
Las condiciones que deben cumplir las filas de las tablas de origen para satisfacer los requisitos de la instrucción SELECT. Estas condiciones se especifican en lascláusulas WHERE y HAVING.Un plan de ejecución de consulta es una definición de los siguientes elementos:
La secuencia en la que se tiene acceso a las tablas de origen. Normalmente, hay muchas secuencias diferentes en las que el servidor de la base dedatos puede tener acceso a las tablas base para generar el conjunto de resultados.Por ejemplo, si la instrucción SELECT hace referencia a tres tablas, el servidor de la base de datos podría tener acceso primero a TablaA, utilizar datos de TablaA paraextraer las filas que coincidan con las de TablaB y, finalmente, utilizar datos deTablaB para extraer datos de TablaC. Las demás secuencias en las que el servidor
de base de datos podría tener acceso a las tablas son:TablaC, TablaB, TablaATablaB, TablaA, TablaCTablaB, TablaC, TablaATablaC, TablaA, TablaB
Los métodos que se utilizan para extraer los datos de cada tabla.Si se necesitan todas las filas de una tabla, el servidor de la base de datos puedeomitir los índices y realizar un recorrido de la tabla.
Top Related