510 likes | 658 Views
Query Evaluation Techniques for Large Databases - Goetz Graefe. Héctor Fabio Cadavid R. Giovanni Antonio Cantor M. Agenda. Introducción Arquitectura de los motores de ejecución de sentencias. Ordenamiento y Hashing Acceso a disco Agregación Operaciones de matching binarias.
E N D
Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio Cantor M. Query evaluation techniques for large databases
Agenda • Introducción • Arquitectura de los motores de ejecución de sentencias. • Ordenamiento y Hashing • Acceso a disco • Agregación • Operaciones de matching binarias Query evaluation techniques for large databases
Agenda (cont.) • Dualidad de algoritmos de procesamiento de sentencias basadas en hashing y en ordenamiento Query evaluation techniques for large databases
Introducción • Consultas complejas: • Requiere una operación conjunta de algoritmos de procesamiento de consultas. • Bases de datos en el entorno actual: • Grandes volúmenes de datos, gigabytes, e incluso terabytes. Query evaluation techniques for large databases
Introducción • Pasos para la ejecución de sentencias Parsing Validación Optimización Ejecución Compilación del plan Query evaluation techniques for large databases
Arquitectura de los motores de ejecución de sentencias. • Algoritmos de procesamiento de consultas ALGORITMO PROC. CONSULTAS OPERADOR ALGEBRÁICO ALGORITMO PROC. CONSULTAS Query evaluation techniques for large databases
ALGORITMO PROC. CONSULTAS A ALGORITMO PROC. CONSULTAS B ALGORITMO PROC. CONSULTAS C MOTOR Sentencia Compleja Resultado Arquitectura de los motores de ejecución de sentencias. • Motor de ejecución de sentencias Query evaluation techniques for large databases
ALGORITMO PROC. CONSULTAS B Arquitectura de los motores de ejecución de sentencias. • Motor de ejecución de sentencias ALGORITMO PROC. CONSULTAS A Algebra física ALGORITMO PROC. CONSULTAS C MOTOR Sentencia Compleja Resultado Query evaluation techniques for large databases
Álgebra lógica. (p.e., álgebra relacional). Álgebra física – específico del sistema Arquitectura de los motores de ejecución de sentencias. SQL92 Oracle MySQL OraLite Query evaluation techniques for large databases
Arquitectura de los motores de ejecución de sentencias. • Algebra lógica vs. algebra física • Algebra lógica no permite predecir una estrategia de ejecución. Ésta depende del álgebra física utilizada. • Por lo anterior, las funciones de costo son solo aplicables a través del algebra física. El álgebra lógica debe ser mapeada a algún tipo de álgebra física. Query evaluation techniques for large databases
Arquitectura de los motores de ejecución de sentencias. • Expresiones lógicas vs. Expresiones físicas. Query evaluation techniques for large databases
Arquitectura de los motores de ejecución de sentencias. • Sincronización y transferencia de datos entre operadores • Alternativas: • IPC / PIPES • Archivos temporales • Planificar entre sí los diferentes operadores en un solo proceso del sistema operativo. Query evaluation techniques for large databases
-Open -Open -Next -Next -Close -Close Arquitectura de los motores de ejecución de sentencias. • Planificación de operadores encadenados. Merge Join OPERADOR B OPERADOR C Query evaluation techniques for large databases
Ordenamiento y Hashing • Ordenamiento (presentación / algoritmos basados en ordenamiento). • Ordenamiento externo (#Run=Size(input)/Memoria) Input Run 1 Quicksort Run 2 Quicksort Run 3… Quicksort Run N Quicksort Query evaluation techniques for large databases
Input menor < Última llave menor(a) Heap Prioridad Run 1 Ordenamiento y Hashing • Heap de prioridad • Heap: P(siguiente elemento sea mayor) -> alta Query evaluation techniques for large databases
Descartado para Run 1 Run 1 *menor(a) Input menor >= Última llave Heap Prioridad Ordenamiento y Hashing • Heap de prioridad Query evaluation techniques for large databases
Run 1 Input menor < Última llave Heap Prioridad Run 2 *menor(a) Ordenamiento y Hashing • Heap de prioridad • Después de recorridos todos los elementos, se inicia el siguiente Run con los marcados(*) Query evaluation techniques for large databases
Ordenamiento y Hashing • Hashing: matching • Algoritmos de procesamiento de consultas basados en Hashing getRecord(key) Hash Table Datos Complejidad: O(N) Query evaluation techniques for large databases
Ordenamiento y Hashing • Hashtable overflow: estrategia preventiva/correctiva Datos getRecord(key) Hash Table Hash table overflow Query evaluation techniques for large databases
Ordenamiento y Hashing • Hashtable overflow: estrategia preventiva Datos Hash Table Query evaluation techniques for large databases
Ordenamiento y Hashing • Estrategia correctiva: algoritmo hash híbrido. Datos Overflow Hash Table Hash Table A disco Query evaluation techniques for large databases
Ordenamiento y Hashing • Estrategia correctiva: algoritmo hash híbrido. Overflow OK Hash Table Hash Table A disco A disco Query evaluation techniques for large databases
Acceso a disco • Sistemas de evaluación de consultas • MB -> TB – Almacenamiento secundario • (1993) Almacenamiento óptico, archivos de cintas automatizados, servidores de almacenamiento remoto deberían contemplarse deberán considerarse para los DBMS en el futuro. Query evaluation techniques for large databases
Acceso a disco • Bases de datos en memoria: • [Analyti, Pramanik, Bitton entre otros]: Bases de datos en memoria para mejorar velocidad de transacciones y procesamiento de consultas. • [Gray, Putzolo, 1987]: Tiene una relación costo/beneficio adecuado si se usa solo para el manejo de los datos accedidos más frecuentemente. Query evaluation techniques for large databases
Acceso a disco • DBMS en disco: I/O -> mayor costo en la evaluación de sentencias en bases de datos enormes. • Lecturas de archivo: read-ahead scan 1 1 1 read 0 1 1 read 0 1 buffer Query evaluation techniques for large databases
Acceso a disco • Unidades de I/O: páginas. • Unidades I/O muy grandes: • Fragmentación del buffer y desperdicio ancho de banda del bus de datos si solo se requieren unos pocos registros. 1 read read buffer Query evaluation techniques for large databases
Acceso a disco • Para lograr equilibrio de desempeño entre búsquedas secuenciales y búsquedas de acceso aleatorio a registros. • Soportar diferentes tamaños de página (requiere manejador de buffer más complejo). • Tamaños de página de tamaño intermedio. Query evaluation techniques for large databases
Acceso a disco • Acceso asociativo usando índices • Objetivo: reducir el número de accesos a disco. • Estructura mas común: Árbol B • Asociación de llaves y localizaciones Query evaluation techniques for large databases
Árbol B Nodos intermedios con N hijos, de un intervalo dado. Split/Join Maximización de nodos hijo: menos balanceos, optimo para estructuras en disco (1 nodo»1 bloque de disco). Acceso a disco Query evaluation techniques for large databases
Acceso a disco • Otras estrategias de índice • ISAM • Quad-Trees • R-trees • Grid files • kB-trees Todos enfocados a estructuras en disco. Query evaluation techniques for large databases
Acceso a disco • Para el manejo de índices, los DBMS modernos no acoplan completamente la búsqueda de registros con la búsqueda en índices. Query evaluation techniques for large databases
Acceso a disco • Beneficios: • Menos I/O requerido para buscar solo elementos indexados. Salario de John Salary Index $200 112 Jhon 28 $200 112 Query evaluation techniques for large databases
Acceso a disco • Optimizadores de consultas: identifican cuando una consulta se puede responder con sólo una búsqueda de índice. • Eventualmente, el optimizador puede resolver una consulta más eficientemente haciendo ‘join’ de los índices (join de RID iguales). Query evaluation techniques for large databases
Salary Index $200 112 Jhon 28 $200 112 Acceso a disco • Join de índices(cuando aplica): Búsqueda sobre archivo de datos obsoleta(mucho menos eficiente). Salario, nombre de 112 Name Index Index Join Jhon 112 Query evaluation techniques for large databases
Acceso a disco • Join funcional • Secuencia A: • Obtener un RID del barrido sobre el índice. • Obtener el registro • Obtener el siguiente RID • Etc… Query evaluation techniques for large databases
Acceso a disco. • Secuencia A con el operador de Join Funcional: • Leer los N primeros RIDs • Cargarlos en un heap de prioridad, donde el criterio es la conveniencia de la localización del registro. • Obtener el RID del heap, obtener el registro. • Obtener otro RID del índice, agregarlo al heap. • Realizar paso 3. Query evaluation techniques for large databases
Administración de buffer • I/O buffer: reducción de I/O almacenando datos en caché. • Política de reemplazo tradicional: LRU (least recently used). • No aplicable para DBMS: operaciones que recorren las páginas una única vez eliminan entradas importantes del buffer. Query evaluation techniques for large databases
Administración de buffer • [Chow, DeWitt – 1985]. Algoritmo DBMIN • Crea varios buffers en cada búsqueda. • Usa una política de reemplazo de elementos de buffer apropiado para el patrón de búsqueda dado. Query evaluation techniques for large databases
Funciones de Agregación • Mínimo • Máximo • Suma • Conteo • Promedio Query evaluation techniques for large databases
2 5 4 6 Tipos de Agregación • Agregación Escalar • Funciones de Agregación 5 Query evaluation techniques for large databases
Las Funciones de Agregación Compara los atributos enlistados Se realiza un computo antes de que el segundo ítem de cada grupo sea eliminado. Remoción de Duplicados Compara todos los atributos Cada ítem duplicado es eliminado inmediatamente Funciones de Agregación y Remoción de Duplicados Query evaluation techniques for large databases
Algoritmos de Agregación y Remoción de Duplicados Loops Anidados Basados en Ordenación Basados en Hash Query evaluation techniques for large databases
Loops Anidados • Entrada Salida Jorge - Tenis Juan – Golf Maria - Golf Rubén - Tenis Sonia - Golf Query evaluation techniques for large databases
Loops Anidados • Entrada Salida Jorge - Tenis Juan – Golf Tenis - 1 Maria - Golf Rubén - Tenis Sonia - Golf Query evaluation techniques for large databases
Loops Anidados • Entrada Salida Jorge - Tenis Juan – Golf Tenis - 1 Maria - Golf Golf - 1 Rubén - Tenis Sonia - Golf Query evaluation techniques for large databases
Loops Anidados • Entrada Salida Jorge - Tenis Juan – Golf Tenis - 1 Maria - Golf Golf - 2 Rubén - Tenis Sonia - Golf Query evaluation techniques for large databases
Loops Anidados • Entrada Salida Jorge - Tenis Juan – Golf Tenis - 2 Maria - Golf Golf - 2 Rubén - Tenis Sonia - Golf Query evaluation techniques for large databases
Nested Loops • Entrada Salida Jorge - Tenis Juan – Golf Tenis - 2 Maria - Golf Golf - 3 Rubén - Tenis Sonia - Golf Query evaluation techniques for large databases
Algoritmo de Agregación basado en Ordenamiento • Entrada Salida Jorge - Tenis Juan – Golf Juan – Golf Maria - Golf Tenis - 2 Golf - 3 Maria - Golf Sonia - Golf Rubén - Tenis Jorge - Tenis Sonia - Golf Rubén - Tenis Query evaluation techniques for large databases
Desempeño de agregación basado en sort y hash Query evaluation techniques for large databases