La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Evaluación y Optimización de Consultas Láminas seleccionadas de las láminas de la Prof. María Esther Vidal.

Presentaciones similares


Presentación del tema: "Evaluación y Optimización de Consultas Láminas seleccionadas de las láminas de la Prof. María Esther Vidal."— Transcripción de la presentación:

1 Evaluación y Optimización de Consultas Láminas seleccionadas de las láminas de la Prof. María Esther Vidal

2 Planes de Ejecución Plan de Ejecución Consulta en SQL
SELECT C.comprador FROM Producto P, Compra C, Persona Q WHERE P.Categoria=“Telefono” AND C.comprador=Q.nombre AND C.prod=P.pnombre comprador categoria=“telefono” (hash join) Plan: Árbol de operadores del álgebra relacional donde cada operador está anotado con el algoritmo que lo implementa comprador=nombre One virtue of a relational DBMS is that queries are composed of a few basic operators, and the implementation of these operators can (and should!) be carefully optimized for good performance. There are several alternative algorithms for implementing each relational operator, and for most operators there is no universally superior technique. Which algorithm is best depends on several factors, including the sizes of the relations involved, existing indexes and sort orders, the size of the available buffer pool, and the buffer replacement policy. An access path is either (1) a le scan or (2) an index plus a matching selection condition. The selectivity of an access path is the number of pages retrieved (index pages plus data pages). The most selective access path is the one that retrieves the fewest pages; using the most selective access path minimizes the cost of data retrieval. Persona prod=pnombre Compra Producto Idealmente: se desea conseguir el mejor. En la práctica: se evitan los peores

3 Planes de Ejecución Dar los nombres de las personas que han comprado un producto en la categoría de telefónos Comprador Comprador Categoria=“telefono” Categoria=“telefono” (hash join) (hash join) prod=pnombre Compradorr=nombre (sort-merge join) (hash join) Producto Comprador=nombre Persona prod=pnombre Compra Persona Compra Producto Existen muchas maneras de evaluar una consulta de SQL

4 Arquitectura del SMBD Parser Plan de Ejecución
Optimización de Consultas Plan de Ejecución Evaluador de Consultas Parsing Se chequea que la sintaxis esté correcta. Se hacen chequeos semánticos. Optimización Búsqueda de información en catálogos (estadísticas, rutas de acceso disponibles). Se selecciona la ruta de acceso que minimice el costo total y el resultado final es un plan de ejecución. Generación de código Traduce el código del plan de ejecución generado por el optimizador a lenguaje de máquina para ser ejecutado. Máquina de Almacenamiento

5 Técnicas de Evaluación de los Operadores Relacionales
SELECCIÓN PROYECCIÓN JOIN

6 Archivos de Registros Página o bloque: Unidad de transferencia entre memoria principal y memoria secundaria. Archivos: Colección de páginas. Deben soportar: insertar/borrar/modificar un registro Leer un registro particular Scan todos los registros. Archivos: Colección de páginas cada una conteniendo un conjunto de registros. Leer un registro particular (especificando record id) 13

7 Tipos de Archivos Archivos Heap: Registros se almacenan en el orden en que son insertados. Archivos Ordenados: Registros se ordenan haciendo uso de alguna clave. Archivos Hashed: Colección de buckets. Bucket = página primaria + 0 ó más páginas de overflow. Función Hashing h: h(r) = b, donde b es el bucket donde se encuentra r. The pages in a hashed le are grouped into buckets. Given a bucket number, the hashed le structure allows us to nd the primary page for that bucket. The bucket to which a record belongs can be determined by applying a special function called a hash function, to the search eld(s). On inserts, a record is inserted into the appropriate bucket, with additional `overflow' pages allocated if the primary page for the bucket becomes full. The overflow pages for each bucket are maintained in a linked list. To search for a record with a given search key value, we simply apply the hash function to identify the bucket to which such records belong and look at all pages in that bucket. This organization is called a static hashed le, and its main drawback is that long chains of overflow pages can develop. This can aect performance because all pages in a bucket have to be searched. 2

8 Indices Un índice acelera la búsqueda en un archivo de datos.
Un índice contiene una colección de data entries. Primarios vs. secundarios: Si la clave de búsqueda contiene una clave, entonces es primario. Clustered vs. unclustered: Si el orden de los registros de datos es el mismo o cercano al orden de los data entries, entonces se llama índice clustered. Permite acceso directo. 7

9 Indices Clustered vs Unclustered
Data entries Data entries (Index File) (Data file) Data Records Data Records CLUSTERED UNCLUSTERED 12

10 Selección Considere la siguiente consulta Q:
Select Carnet From Estudiante Where Nombre=“Luis Perez” Maneras de implementar la consulta Q: Haciendo un recorrido de la relación completa y seleccionando aquellas que satisfagan la condición. Si el archivo contiene 1000 páginas, el costo de esta operación es 1000 I-O’s. Si existe un índice en la tabla Estudiante sobre el atributo Nombre, hacer uso del índice para identificar los registros que satisfacen Q. Si el índice es un B+-tree clustered, el costo de esta operación es H + P I-O´s, donde H es el número de niveles del árbol y P es el número de páginas que ocupan los registros que satisfacen Q.

11 Selección Maneras de implementar la consulta Q:
Si la tabla Estudiante no está indexada, pero está ordenada por el campo Nombre, Si se ejecuta búsqueda binaria, el costo de ubicar el registro es (log2M) + P, donde M es el número de páginas del archivo y P es el número de páginas que almacenan los registros que satisfacen Q.

12 Técnicas de Evaluación - Proyección
Técnica I (Basadas en Ordenamientos) Recorrer el archivo y producir el conjunto de tuplas que contienen los atributos deseados. Ordenar las tuplas haciendo uso de todos los atributos como clave de ordenamiento. Recorrer el resultado, comparando las tuplas adyacentes y descartar los duplicados. Costo: M +T + O(Tlog T) + T, donde M: número de páginas del archivo, T: número de páginas del resultado temporal

13 Técnicas de Evaluación - Proyección
Técnica II (Basadas en Hashing) Fase I (Particionamiento) Fase II (Eliminación de Duplicados) Salida 1 Entrada 1 Fase I (Particionamiento): Se disponen de 1 página para entrada y B-1 páginas para salida. Para cada tupla en la página de entrada, Descartar los atributos no proyectados. Crear B-1 particiones en disco. Aplicar una función de hashing a la combinación de los atributos proyectados. La función debe distribuir uniformemente las tuplas en B-1 páginas. Vaciar el contenido de cada página de salida Bi en la partición Pi. Función hashing B-1 Disco Disco B-1 B buffers en MP

14 Técnicas de Evaluación - Join
Nested-Loop Join. Block Nested-Loop Join. Index Nested-Loop Join. Sort-Merge Join. Hash Join.

15 Técnicas de Evaluación - Join
Técnica I (Nested-Loop Join): A Join B For each tupla a en A do For each tupla b en B do if ai=bi then add (a,b) to result M: Número de páginas en A. Pa: Número de tuplas de A en una página. N: Número de páginas en B. Pb: Número de tuplas de B en una página. Costo: M + Pa * M *N

16 Técnicas de Evaluación - Join
Técnica II (Block Nested-Loop Join): A Join B Hip: Existe suficiente memoria principal para almacenar A y dos buffers extra. For each bloque de T-2 páginas de A do For each página de B do{ for all matching in-memory tuples a en A and b en B add (a,b) to result } M: Número de páginas en A. N: Número de páginas en B. T: Número de páginas en memoria principal disponibles. Costo: M + techo(M/T-2)*N

17 Técnicas de Evaluación - Join
Técnica III (Index Nested-Loop Join): A Join B Hip: Existe un índice para B sobre los atributos usados en el Join. For each tupla a en A do For each tupla b en B where ai=bi add (a,b) to result; M: Número de páginas en A. N: Número de páginas en B. T: Número de páginas en memoria principal disponibles. Costo: M + costo(B) Si se tiene un clustered B+-tree, Costo(B)=4+1 Si se tiene un unclustered B+-tree, Cost(B)=4+B-maching-tuple Si se tiene clustered hashing, Cost(B)=2+1 Si se tiene unclustered hashing, Costo(B)=2+B-matching-tuples

18 Técnicas de Evaluación - Join
Técnica IV (Sort-Merge Join): A Join B Ordenar las relaciones A y B por los atributos en el Join. Mezclar las tablas obtenidas en el punto anterior. M: Número de páginas en A. N: Número de páginas en B. Costo de ordenar las tablas: O(MlogM) +O(NlogN) Costo de Mezclar las tablas ordenadas: M + N

19 Técnicas de Evaluación - Join
Técnica V (Hash Join): A Join B La idea es aplicar la misma función de hashing h sobre el atributo de join, a las tuplas de ambas relaciones. Entrada de B Función hashing Salida Disco Disco Particiones de A y B Resultado del Join

20 Técnicas de Evaluación - Join
Técnica V (Hash Join): A Join B Fase de Partición For each tuple a en A Add a to the page h(a) For each tuple b en B. Add b to page h(b) Costo: 2(M +N) In the partitioning phase we have to scan both R and S once and write them both out once. The cost of this phase is therefore 2(M + N).

21 Técnicas de Evaluación - Join
Técnica V (Hash Join): A Join B Fase de Prueba For each partición Al de A, Crear una tabla de hashing en MP, usar una función de hashing h2. For each tupla b en particion Bl de B For each tupla a de A en el bucket h2(b) If ai=bi, output (a,b) Costo: M +N Implementación de AUB: Ordenamiento: Ordenar A usando la combinación de todos los campos. Ordenar B usando la combinación de todos los campos. Mezclar A y B, eliminando duplicados. HASHING: Particionar A y B usando una funcion h. Para cada particion l: Construir una tabla de hash para Bl, usando h2. Para cada tupl a en Al, Si a esta en h2(a), descartarla, Sino anadirla. Escribir en la salida la tabla de hashing.

22 Optimización de Consultas - Clasificación
Basadas en Heurísticas. Se hace uso de equivalencias entre expresiones del álgebra relacional. Criterio de Optimalidad: Reducir el tamaño de los resultados intermedios. Basada en Costos. Se usa el costo estimado de la ejecución de cada operador.

23 Optimización Basada en Heurísticas
Se identifica un árbol canónico para una consulta Q. Se aplican reglas de equivalencia entre operadores del álgebra relacional, que permiten minimizar el tamaño de los resultados intermedios. Heurística: empujar lo más abajo en el árbol las selecciones y proyecciones.

24 Árbol Lógico Cada hoja del árbol representa una tabla.
Cada nodo del árbol es un operador del álgebra relacional. Cada nodo del árbol tiene a lo más dos hijos. Árbol Lineal Izquierdo es un árbol tal que cada nodo tiene como hijo derecho una tabla.

25 Árbol Lógico Canónico Dada una expresión de SQL:
Select LISTA_ATT From LISTA_TABLAS Where Condiciones Un Árbol Lógico Canónico es un árbol lógico lineal izquierdo tal que: La raíz del árbol corresponde a un nodo unario para el operador proyección de todos los atributos que aparecen en LISTA_ATT. El hijo de este nodo es una sub-árbol canónico de selección. Un sub-árbol canónico de selección, es un árbol unario cuyo nodo raíz corresponde a la selección de todas las condiciones que aparecen en Condiciones. El hijo de este nodo es un sub-árbol canónico de producto cartesiano. Un sub-árbol de producto canónico cartesiano es un árbol binario: Cada nodo corresponde a un producto cartesiano. Hijo derecho es una tabla en LISTA_TABLAS Hijo izquierdo es una tabla en LISTA_TABLAS o un sub- árbol canónico cartesiano

26 Árbol de Ejecución Árbol de lógico donde cada nodo está anotado con el operador físico con el que se evaluará el operador lógico correspondiente.

27 Estimación del Costo Para cada plan se debe estimar:
El costo de cada operación en un árbol de ejecución. El tamaño del resultado para cada operación en el árbol! Propagar las estimaciones hacia arriba en el árbol. Discutiremos el modelo de estimación del System R. El costo de cada operación en un árbol de ejecución. Depende de la cardinalidad de la entrada. El tamaño del resultado para cada operación en el árbol! Uso de la información sobre las relaciones de entrada. Asumir para las selecciones y joins independencia de los predicados. Discutiremos el modelo de estimación del Systema R. Muy inexacto pero trabaja en la práctica.

28 Estadísticas y Catálogos
El catálogo mantiene la información sobre las relaciones e índices usados. Los Catálogos típicamente contienen al menos: # tuplas (NTuplas) y # páginas (NPáginas) para cada relación. # valores diferentes (NKeys) y Npáginas por índice. Altura del índice, valor más alto y más bajo (Bajo/Alto) para cada índice. Los catálogos se actualizan periódicamente. Los catálogos se actualizan periodicamente. Actualizar las estadísticas cada vez que exista un cambio es muy caro. Alguna información más detallada, por ejemplo histogramas, se almacenan.

29 Determinando el orden de los joins.
En principio se necesita considerar todos los posibles órdenes. B A C D C D B A

30 Determinando el orden de los joins
Es necesario restringir el espacio de búsqueda: Si el número de joins incrementa, el número de alternativas crece rápidamente. System-R considera únicamente árboles lineales izquierdos (left-deep join trees). Solución Ingenua genera todas las permutaciones de las n relaciones. n! combinaciones.

31 Enumeración de Planes Lineales Izquierdos
Principio de Optimalidad: el mejor plan para el join de R1,…Rn-1 será parte del mejor plan para el join de R1,…,Rn Se puede reducir la complejidad a n2n Significativamente más económico que la solución ingenua.

32 System R El uso de estadísticas de instancias de la base de datos para estimar el costo de un plan de evaluación de queries. Considera solo los planes con joins binarios en los cuales la relación inner es una relación base. Consultas no anidadas No realiza eliminaciones de duplicados para las proyecciones. Un modelo de costos basado en el costo de acceder los datos almacenados en memoria secundaria. Considera solo los planes con joins binarios en los cuales la relación inner es una relación base (no una relación temporal). No realiza eliminaciones de duplicados para las proyecciones (a menos que una cláusula DISTINCT lo requiera).

33 Control de Búsquedas Evitar Productos Cartesianos.
Retardar los productos cartesianos tan tarde como sea posible. No considerar: ((R1xR2) Join R3) Si considerar: ((R1 Join R3) Join R2)

34 Programación Dinámica -System R
Enumeración usando N pasadas (si N relaciones se consideran): Paso 1: Encontrar mejor plan de 1-relación para cada relación. Paso 2: Encontrar la mejor manera de hacer el join de cada plan con 1-relación (como un outer) a otra relación. (Todos planes de 2-relaciones) Paso N: Encontrar la mejor manera de hacer el join de planes de (n-1) relaciones (como un outer) con una N’th relación. (Todos planes de N-relaciones) Para subconjunto de relaciones, retener solo: El plan con más bajo costo Para subconjunto de relaciones, retener solo: El plan con más bajo costo y El plan con más bajo costo para cada orden interesante de las tuplas. ORDER BY, GROUP BY, agregaciones, etc. se manejan como un paso final, usando algún orden interesante o un operador de orden adicional. Un plan con N-1 relaciones no se combina con una relación adicional a menos que exista una condición de join entre ellas. Es decir, evitar en lo posible los Productos Cartesianos. La solución sigue siendo exponencial en el número de tablas.

35 Propiedades de los Operadores del Álgebra Relacional

36 Optimización de Consultas Skyline
Distintas implementaciones para el operador Skyline ¿Skyline en la raíz del árbol de ejecución o push down el operador? Estimar cardinalidad del Skyline Estimar costo del operador

37 Optimización de consultas Skyline
Consulta: Las personas que se hayan hospedado en hoteles con la máxima calidad de servicio. Personas Skyline Join Hotel Hospeda Skyline Join Hotel Hospeda Personas DYQO dPeaQock Arboles Equivalentes Se requiere de un Modelo de Costo

38 Reglas algebraicas


Descargar ppt "Evaluación y Optimización de Consultas Láminas seleccionadas de las láminas de la Prof. María Esther Vidal."

Presentaciones similares


Anuncios Google