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

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

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

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

Evaluación y Optimización de Consultas

Láminas seleccionadas de las láminas de la Prof. María Esther Vidal

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

Planes de EjecuciónPlan de Ejecución

SELECT C.compradorFROM Producto P, Compra C, Persona QWHERE P.Categoria=“Telefono” AND

C.comprador=Q.nombre ANDC.prod=P.pnombre

Consulta en SQL

Plan: Árbol de operadores del álgebra relacionaldonde cada operador está anotado con el algoritmo que lo implementa

Idealmente: se desea conseguir el mejor. En la práctica: se evitan los peores

Compra Producto

comprador=nombre

categoria=“telefono”

comprador

Personaprod=pnombre

(hash join)

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

Planes de Ejecución

Dar los nombres de las personas que han comprado un producto en la categoría de telefónos

Existen muchas maneras de evaluar una consulta de SQL

Compra Persona

Comprador=nombre

Categoria=“telefono”

Comprador

(sort-merge join) Producto

prod=pnombre

(hash join)

Compra Producto

Compradorr=nombre

Categoria=“telefono”

Comprador

(hash join)Personaprod=pnombre

(hash join)

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

Arquitectura del SMBD

Máquina de Almacenamiento

Optimización de Consultas

Parser

Evaluador de Consultas

Plan de Ejecución

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

• SELECCIÓN

• PROYECCIÓN

• JOIN

Técnicas de Evaluación de los Operadores Relacionales

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

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.

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

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.

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

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.

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

Data entries(Index File)

(Data file)

Data Records

Data entries

Data Records

CLUSTERED UNCLUSTERED

Indices Clustered vs Unclustered

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

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

Selección

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

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

Selección

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

Técnica I (Basadas en Ordenamientos)

1) Recorrer el archivo y producir el conjunto de tuplas que contienen los atributos deseados.

2) Ordenar las tuplas haciendo uso de todos los atributos como clave de ordenamiento.

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

Técnicas de Evaluación - Proyección

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

Técnica II (Basadas en Hashing)

Fase I (Particionamiento)

Fase II (Eliminación de Duplicados)

DiscoB buffers en MP

Disco

Entrada

Salida

Función hashing

1

B-1

1

B-1

Técnicas de Evaluación - Proyección

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

• Nested-Loop Join.

• Block Nested-Loop Join.

• Index Nested-Loop Join.

• Sort-Merge Join.

• Hash Join.

Técnicas de Evaluación - Join

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

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

Técnicas de Evaluación - Join

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

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

Técnicas de Evaluación - Join

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

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)

Técnicas de Evaluación - Join

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

Técnica IV (Sort-Merge Join): A Join B

1. Ordenar las relaciones A y B por los atributos en el Join.

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

Técnicas de Evaluación - Join

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

Disco Disco

Entrada de B

Salida

Función hashing

Particiones de A y B Resultado del Join

Técnicas de Evaluación - JoinTé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.

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

Técnicas de Evaluación - JoinTé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)

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

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

Técnicas de Evaluación - Join

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

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.

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

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.

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

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

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

Á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

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

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

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

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.

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

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.

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

Determinando el orden de los joins.

• En principio se necesita considerar todos los posibles órdenes.

C DBA BA

C

D

BA

C

D

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

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.

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

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.

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

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.

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

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)

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

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

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

Propiedades de los Operadores del Álgebra Relacional

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

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

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

Optimización de consultas Skyline

• Consulta: Las personas que se hayan hospedado en hoteles con la máxima calidad de servicio.

Skyline

Join

Hotel Hospeda

Join

Personas

• Arboles Equivalentes

• Se requiere de un Modelo de Costo

dPeaQock

Personas

Skyline

Join

Hotel Hospeda

Join

DYQO

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

Reglas algebraicas