Query evaluation techniques for large databases Query Evaluation Techniques for Large Databases -...

Post on 06-Feb-2015

10 views 1 download

transcript

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