query evaluation techniques for large databases query evaluation techniques for large databases -...

51
Query evaluation techniqu es for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio Cantor M.

Upload: marcelo-murga

Post on 06-Feb-2015

11 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Query Evaluation Techniques for Large Databases

- Goetz Graefe

Héctor Fabio Cadavid R.

Giovanni Antonio Cantor M.

Page 2: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 3: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Agenda (cont.)

Dualidad de algoritmos de procesamiento de sentencias basadas en hashing y en ordenamiento

Page 4: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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.

Page 5: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 6: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 7: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 8: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 9: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 10: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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.

Page 11: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Arquitectura de los motores de ejecución de sentencias.

Expresiones lógicas vs. Expresiones físicas.

Page 12: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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.

Page 13: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 14: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 15: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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)

Page 16: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 17: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 18: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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)

Page 19: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Ordenamiento y Hashing

Hashtable overflow: estrategia preventiva/correctiva

HashTable

Datos

getRecord(key)

Hash table overflow

Page 20: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Ordenamiento y Hashing

Hashtable overflow: estrategia preventiva

HashTable

Datos

Page 21: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Ordenamiento y Hashing

Estrategia correctiva: algoritmo hash híbrido.

Datos HashTable

HashTable

A disco

Overflow

Page 22: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Ordenamiento y Hashing

Estrategia correctiva: algoritmo hash híbrido.

HashTable

A disco

HashTable

A disco

Overflow OK

Page 23: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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.

Page 24: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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.

Page 25: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 26: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 27: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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.

Page 28: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 29: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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).

Page 30: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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.

Page 31: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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.

Page 32: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 33: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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).

Page 34: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 35: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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…

Page 36: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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.

Page 37: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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.

Page 38: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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.

Page 39: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Funciones de Agregación

Mínimo Máximo Suma

Conteo Promedio

Page 40: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Tipos de Agregación

Agregación Escalar

Funciones de Agregación

5

2546

Page 41: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 42: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Algoritmos de Agregación y Remoción de Duplicados

Loops AnidadosBasados en

HashBasados en Ordenación

Page 43: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Loops Anidados

Entrada SalidaJorge - TenisJuan – GolfMaria - Golf

Sonia - GolfRubén - Tenis

Page 44: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Loops Anidados

Entrada SalidaJorge - TenisJuan – GolfMaria - Golf

Sonia - GolfRubén - Tenis

Tenis - 1

Page 45: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Loops Anidados

Entrada SalidaJorge - TenisJuan – GolfMaria - Golf

Sonia - GolfRubén - Tenis

Tenis - 1Golf - 1

Page 46: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Loops Anidados

Entrada SalidaJorge - TenisJuan – GolfMaria - Golf

Sonia - GolfRubén - Tenis

Tenis - 1Golf - 2

Page 47: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Loops Anidados

Entrada SalidaJorge - TenisJuan – GolfMaria - Golf

Sonia - GolfRubén - Tenis

Tenis - 2Golf - 2

Page 48: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Nested Loops

Entrada SalidaJorge - TenisJuan – GolfMaria - Golf

Sonia - GolfRubén - Tenis

Tenis - 2Golf - 3

Page 49: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

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

Page 50: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Desempeño de agregación basado en sort y hash

Page 51: Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases - Goetz Graefe Héctor Fabio Cadavid R. Giovanni Antonio

Query evaluation techniques for large databases

Algoritmos de Join

Loops anidados Merge-Join Hash Join Pointer Based