El documento describe los conceptos de optimización de consultas distribuidas y locales. La optimización de consultas distribuidas busca reducir la transferencia de datos entre nodos mediante el uso de estrategias de optimización global y local. La optimización local se aplica en cada nodo para optimizar las subconsultas locales usando algoritmos estándar.
1. Optimización de consultas distribuidas
Optimization global de consultas
Optimization local de consultas
2. Optimización de consultas
Proceso 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.
3. 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).
4. 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.
5. EJEMPLO DE LA NECESIDAD DE
OPTIMIZAR
Tablas 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”.
6. S (S#, NOMBRE,…)
P (P#, S#, A#, UNIDADES,…)
SELECT DISTINCT S.NOMBRE
FROM S, P
WHERE S.S#=P.S#
AND P.A#=”P2”;
7. 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.
8. SELECT DISTINCT S.NOMBRE
FROM S, P
WHERE S.S#=P.S# AND P.P#=”P2”;
πS.NOMBRE
(σA#=”P2”
(σS.S#=P.S#
(S x P)))
9.
10. 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.
11. SELECT DISTINCT S.NOMBRE
FROM S, P WHERE S.S#=P.S# AND P.A#=”P2”;
πS.NOMBRE
(σS.S#=P.S#
(S x (σA#=”P2”
(P))))
12. 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.
14. 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.
15. 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.
16. EJEMPLO (para la realización de estrategia
de optimización global):
17.
18.
19. 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. La
optimización local utiliza los algoritmos de sistemas
centralizados.
20. 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.
21. 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:
22. La secuencia en la que se tiene acceso a las tablas de ori
gen. 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
23. de base de datos podría tener acceso a las tablas son:T
ablaC, TablaB, TablaATablaB, TablaA, TablaCTablaB, T
ablaC, TablaATablaC, TablaA, TablaB
Los métodos que se utilizan para extraer los datos de c
ada 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.