Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases -...
-
Upload
marcelo-murga -
Category
Documents
-
view
11 -
download
1
Transcript of Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases -...
Query evaluation techniques for large databases
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
Compilación del plan
Ejecución
Query evaluation techniques for large databases
Arquitectura de los motores de ejecución de sentencias.
Algoritmos de procesamiento de consultas
ALGORITMOPROC.
CONSULTAS OPERADORALGEBRÁICO
ALGORITMOPROC.
CONSULTAS
Query evaluation techniques for large databases
Arquitectura de los motores de ejecución de sentencias.
Motor de ejecución de sentencias
Sen
tenc
ia C
ompl
eja
MO
TO
R
ALGORITMOPROC.
CONSULTASA
ALGORITMOPROC.
CONSULTASC
ALGORITMOPROC.
CONSULTASB R
esul
tado
Query evaluation techniques for large databases
Arquitectura de los motores de ejecución de sentencias.
Motor de ejecución de sentencias
Sen
tenc
ia C
ompl
eja
MO
TO
R
ALGORITMOPROC.
CONSULTASA
ALGORITMOPROC.
CONSULTASC
ALGORITMOPROC.
CONSULTASB R
esul
tado
Algebra física
Query evaluation techniques for large databases
Arquitectura de los motores de ejecución de sentencias.
Álgebra lógica. (p.e., álgebra relacional).
Álgebra física – específico del sistema
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
Arquitectura de los motores de ejecución de sentencias.
Planificación de operadores encadenados.
Merge Join
OPERADOR B
OPERADOR C
-Open
-Next
-Close-Open
-Next
-Close
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
Run 2
Run 3…
Run N
Quicksort
Quicksort
Quicksort
Quicksort
Query evaluation techniques for large databases
Ordenamiento y Hashing
Heap de prioridad– Heap: P(siguiente elemento sea mayor) -> alta
InputHeap
Prioridad
menor <Última llave
Run 1
menor(a)
Query evaluation techniques for large databases
Ordenamiento y Hashing
Heap de prioridad
InputHeap
Prioridad
menor >=Última llave
Run 1*menor(a)
Descartado para Run 1
Query evaluation techniques for large databases
Ordenamiento y Hashing
Heap de prioridad– Después de recorridos todos los elementos, se
inicia el siguiente Run con los marcados(*)
InputHeap
Prioridad
menor <Última llave
Run 1
*menor(a)
Run 2
Query evaluation techniques for large databases
Ordenamiento y Hashing
Hashing: matching Algoritmos de procesamiento de consultas
basados en Hashing
HashTableDatos
getRecord(key)
Complejidad: O(N)
Query evaluation techniques for large databases
Ordenamiento y Hashing
Hashtable overflow: estrategia preventiva/correctiva
HashTable
Datos
getRecord(key)
Hash table overflow
Query evaluation techniques for large databases
Ordenamiento y Hashing
Hashtable overflow: estrategia preventiva
HashTable
Datos
Query evaluation techniques for large databases
Ordenamiento y Hashing
Estrategia correctiva: algoritmo hash híbrido.
Datos HashTable
HashTable
A disco
Overflow
Query evaluation techniques for large databases
Ordenamiento y Hashing
Estrategia correctiva: algoritmo hash híbrido.
HashTable
A disco
HashTable
A disco
Overflow OK
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
10
1 1
10
1
readread
buff
er
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
readread
buff
er
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
Acceso a disco
Á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 nodo1 bloque de 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.
Salary Index
112 $200Jhon 28
$200112
Salariode John
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
Acceso a disco
Join de índices(cuando aplica): Búsqueda sobre archivo de datos obsoleta(mucho menos eficiente).
Salario, nombrede 112
Salary Index
$200112
112 $200Jhon 28
Name Index
Jhon112
IndexJoin
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:
1. Leer los N primeros RIDs2. Cargarlos en un heap de prioridad, donde el
criterio es la conveniencia de la localización del registro.
3. Obtener el RID del heap, obtener el registro.4. Obtener otro RID del índice, agregarlo al heap.5. 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
Tipos de Agregación
Agregación Escalar
Funciones de Agregación
5
2546
Query evaluation techniques for large databases
Funciones de Agregación y Remoción de Duplicados
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
Query evaluation techniques for large databases
Algoritmos de Agregación y Remoción de Duplicados
Loops AnidadosBasados en
HashBasados en Ordenación
Query evaluation techniques for large databases
Loops Anidados
Entrada SalidaJorge - TenisJuan – GolfMaria - Golf
Sonia - GolfRubén - Tenis
Query evaluation techniques for large databases
Loops Anidados
Entrada SalidaJorge - TenisJuan – GolfMaria - Golf
Sonia - GolfRubén - Tenis
Tenis - 1
Query evaluation techniques for large databases
Loops Anidados
Entrada SalidaJorge - TenisJuan – GolfMaria - Golf
Sonia - GolfRubén - Tenis
Tenis - 1Golf - 1
Query evaluation techniques for large databases
Loops Anidados
Entrada SalidaJorge - TenisJuan – GolfMaria - Golf
Sonia - GolfRubén - Tenis
Tenis - 1Golf - 2
Query evaluation techniques for large databases
Loops Anidados
Entrada SalidaJorge - TenisJuan – GolfMaria - Golf
Sonia - GolfRubén - Tenis
Tenis - 2Golf - 2
Query evaluation techniques for large databases
Nested Loops
Entrada SalidaJorge - TenisJuan – GolfMaria - Golf
Sonia - GolfRubén - Tenis
Tenis - 2Golf - 3
Query evaluation techniques for large databases
Algoritmo de Agregación basado en Ordenamiento
Entrada SalidaJorge - TenisJuan – GolfMaria - Golf
Sonia - GolfRubén - Tenis
Tenis - 2Golf - 3
Jorge - Tenis
Juan – GolfMaria - GolfSonia - 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
Algoritmos de Join
Loops anidados Merge-Join Hash Join Pointer Based