procesamiento de consultas

43
Administración de Base de Datos Procesamiento de Consultas Ing. Ronald Pérez [email protected] [email protected]

Upload: ronromero

Post on 08-Aug-2015

214 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Procesamiento de Consultas

Administración de Base de Datos

Procesamiento de Consultas

Ing. Ronald Pé[email protected]

[email protected]

Page 2: Procesamiento de Consultas

Agenda

Objetivo

Arquitectura de un motor de base de datos

Componentes

Panorámica procesamiento de consultas

Algebra relacional

Reglas de equivalencia

Procesamiento de consultas

Optimización de consultas.

Expresiones equivalentes

Fase de optimización

Comparación de enfoques

Información de catálogo

¿Cómo se construye un plan?

Técnicas algebraicas

Técnicas físicas

Ejercicio

Page 3: Procesamiento de Consultas

Objetivo

Disminuir el tiempo de ejecución de las consultas

realizadas frecuentemente en una base de datos.

¿Cuál es el camino de acceso a los datos?

Modificar el diseño físico

o Añadir redundancia y modificar la organización

o Reorganizar las estructuras para mantener las

características a pesar de borrados y actualizaciones.

Page 4: Procesamiento de Consultas

Arquitectura de un motor de base de datos

Page 5: Procesamiento de Consultas

Componentes

Disk Manager

Capa de más bajo nivel de la BD

Maneja el espacio en disco

Oculta los detalles de cómo se guardan las tablas

en hardware

Provee una abstracción a capas superiores,

haciendo que las tablas se vean como una colección de

páginas

Page 6: Procesamiento de Consultas

Componentes

Buffer Manager

Responsable de traer las páginas del disco a la

memoria.

Capa que administra un espacio de memoria de la

BD.

Divide a la memoria en páginas de igual tamaño

(formando uno o varios pooles de memoria).

Capas superiores pueden usar las páginas sin

preocuparse si están en disco o memoria, de eso se

encargará este componente.

Page 7: Procesamiento de Consultas

Componentes

Query Evaluation Engine

Recibe comandos SQL.

Al recibir una consulta, el Parser la interpreta y la

pasa al Query Optimizer.

El Query Optimizer busca un plan de ejecución

eficiente.

El plan generado es finalmente ejecutado por el

Query Executor.

Page 8: Procesamiento de Consultas

Componentes

Transaction Manager

Controla la ejecución de las transacciones.

Lock Manager

Mantiene registro de los locks sobre los objetos de la

BD.

Recovery Manager

Mantiene un log sobre los cambios en la BD.

Se encarga de restaurar la BD a un estado

consistente en caso de una caída.

Page 9: Procesamiento de Consultas

Panorámica del procesamiento de consultas

Los lenguajes de consultas relacionales (como el SQL) nos

dan una interfaz declarativa de alto nivel para acceder a

los datos almacenados en una base de datos.

El procesamiento de consultas se refiere al conjunto de

actividades que realiza un motor de base de datos para

la extracción de datos de la base de datos a partir de

una sentencia en un lenguaje de consulta.

Page 10: Procesamiento de Consultas

Panorámica del procesamiento de consultas

Procesamiento de consultas: las actividades implicadas

en el análisis sintáctico, la validación, la optimización y la

ejecución de consultas.

Optimización de consultas: la actividad de seleccionar una

estrategia de ejecución eficiente para el procesamiento

de la consulta.

Page 11: Procesamiento de Consultas

Panorámica del procesamiento de consultas

Ejemplo hallar todos los gerentes que trabajen en la sucursal

de Londres:

SQL: SELECT * FROM Staff s, Branch b

WHERE s.branchNo = b.branchNo AND

(s.position= ‘Manager’ AND b.city =‘’London)

Suponer que hay:

1000 tuplas en Staff

50 tuplas en Brach

50 empleados con categoría Maneger

5 sucursales en Londres

Page 12: Procesamiento de Consultas

Panorámica del procesamiento de consultas

Los pasos básicos son:

1. Parsing y traducción

2. Optimización

3. Generación de código

4. Ejecución de la consulta

Estos pasos en general son realizados por diferentes

componentes del motor. Los componentes clave son: el

optimizador de consultas y el procesador de consultas.

Page 13: Procesamiento de Consultas

Algebra relacional

Definición

Conjunto cerrado de operaciones

Actúan sobre las relaciones

Producen relaciones como resultados

Pueden combinarse para construir expresiones

más complejas

Operadores Básicos

•Unión

•Diferencia

•Producto cartesiano

•Selección

•Proyección

Son operacionalmente

completos permiten expresar

cualquier consulta a una BDR

Operadores Derivados

•Intersección

•Join

•División

•Asociación

oNo añaden nada nuevo

oSe forman combinando los

operadores básicos.

oSon útiles en determinadas

consultas

Page 14: Procesamiento de Consultas

Reglas de equivalencia

1. Las operaciones de selección conjuntivas pueden dividirse

en una secuencia de selecciones individuales.

Cascada de selecciones.

2. Las operaciones de selección son conmutativas.

Conmutación de selecciones.

3. Sólo son necesarias las últimas operaciones de una

secuencia de operaciones de proyección, las demás pueden

omitirse.

Cascada de proyecciones

))(()(2121

EE

))(())((1221

EE

121

)()))...)((...((LL LL

EEn

Page 15: Procesamiento de Consultas

Reglas de equivalencia

4. Las selecciones pueden combinarse con los productos

cartesianos y con las reuniones.

5. las operaciones de reunión son conmutativas

6. (a) Las operaciones de reunión natural son asociativas:

(b) Las reuniones son asociativas en sentido siguiente:

2121

2121

2121)( .

)(.

EEEEb

EEEEa

1221 EEEE

)()( 321321 EEEEEE

32 2

321321

Ey E de atributos solo

)()(231321

implicadonde

EEEEEE

Page 16: Procesamiento de Consultas

Reglas de equivalencia

7. Las operaciones de selección se distribuyen por la

operación reunión bajo las dos condiciones siguientes:

(a) Cuando los atributos de la condición de selección implican

únicamente los atributos de una de las expresiones (por

ejemplo E) que se están uniendo.

(b) Cuando θ1 implica únicamente los atributos de E1 y θ2

Implican los atributos de E2

2121 ))(()(00

EEEE

))(())(()( 2121 2121EEEE

0

Page 17: Procesamiento de Consultas

Reglas de equivalencia

9. Las operaciones de unión e intersección son conmutativas

La diferencia de conjuntos no es conmutativa.

10. La unión e intersección de conjuntos son asociativas.

11. La operación selección se distribuye por las operaciones

de unión, intersección y diferencia de conjuntos

12. La operación de proyección es distributiva con respecto

a la operación unión:

1221

1221

EEEE

EEEE

)()(

)()(

321321

321321

EEEEEE

EEEEEE

para no pero paray también -)(E)E-(E

y parasimilar manera dey )(E-)(E)E-(E

2121

2121

E

))((())((()( 2121 EEEE LLL

Page 18: Procesamiento de Consultas

Procesamiento de consultas

Dada una consulta, encontrar un plan de ejecución eficiente.

Un plan de ejecución define cómo se resolverá una consulta

dada, indicando paso a paso los algoritmos y estructuras que

se usarán para resolverla.

Tiempo búsqueda plan eficiente = 1 seg Tiempo

de ejecución plan = 1 seg

Tiempo búsqueda mejor plan = 10 min

Tiempo de ejecución plan = 1 ms

Query

Tiempo total = 10 min (aprox)

Tiempo total = 2 seg

Analizar todo el espacio de búsqueda puede ser prohibitivamente costoso, por lo que se utilizan

diferentes técnicas para evitar analizarlo completo, pero obteniendo planes eficientes.

Page 19: Procesamiento de Consultas

Optimización de consultas.

El coste de una consulta se puede expresar:

o El tiempo de acceso a almacenamiento secundario.

o El tiempo de CPU para ejecutar la consulta.

o El tiempo de comunicación (BD distribuidas).

El tiempo de acceso dependerá:

o Del volumen de datos sobre el cuál debe actuar

(número y tamaño de las tuplas)

o De la organización física (existencia de índices,

agrupamientos, etc.)

o De su localización (memoria principal o dispositivo

externo).

o Del tamaño del buffer de memoria principal que se

dedica a almacenar las tuplas mientras se ejecutan los

operaciones sobre ellas.

Page 20: Procesamiento de Consultas

Expresiones equivalentes

Los optimizadores de consultas usan las reglas de

equivalencia para generar de manera sistemática

expresiones equivalentes a la expresión de consulta dada.

El proceso es:

o Para cada sub-expresión que coincide con la parte

derecha o izq. de una regla, se genera una nueva

expresión y con esta se continúa el mismo proceso

hasta que no se puedan generar nuevas expresiones

o Resulta costoso tanto en tiempo como en espacio.

Page 21: Procesamiento de Consultas

Expresiones equivalentes

El tiempo puede reducirse si el optimizador tiene en cuenta

la estimación de costes y de este modo evita evaluar

ciertas expresiones.

El espacio de memoria se puede reducir si dos

subexpresiones comparten el mismo espacio cuando éstas

son idénticas

Page 22: Procesamiento de Consultas

Fase de optimización

La fase de optimización de una consulta tiene por objeto

generar el plan de ejecución para la consulta a partir del

programa algebraico generado en la fase anterior de

descomposición.

Deben contemplarse diversos aspectos en esta fase de

optimización:

El momento o modo de generación del plan.

La estrategia de optimización de operadores algebraicos

del programa.

Page 23: Procesamiento de Consultas

Fase de optimización

En cuanto al momento de generación, se

contemplan:

Planes dinámicos

Planes estáticos

La estrategia de optimización permite diferenciar los

enfoques de:

Optimización por reglas

Optimización por costes

Page 24: Procesamiento de Consultas

Comparación de enfoques

Plan dinámico Plan estático

Toda la información necesaria para

optimizar la consulta está disponible

cada vez que se genera el plan.

El plan se genera con la información

disponible en el momento de su

catalogación. Si la información

cambia con el tiempo, el plan puede

no ser óptimo en las nuevas

circunstancias.

Cada vez que se ejecuta la consulta

se genera el plan, añadiendo el

tiempo de generación del plan al

tiempo de ejecución del mismo.

Sólo se incurre en el coste o tiempo

de generación del plan en el

momento en que se cataloga. Las

transacciones no sufrirán este

tiempo de generación, pues pueden

cargar y ejecutar el plan en

memoria.

Page 25: Procesamiento de Consultas

Comparación de enfoques

Optimización basada en reglas Optimización basado en coste

Sólo tiene en cuenta los caminos de

acceso existentes en el esquema

interno de la BD (índices primarios,

secundarios, clusters, rutinas de

hashing, etc.), un conjunto

predefinido de reglas (métodos

alternativos) y la manera de

especificar las condiciones en la

consulta (constantes, variables, uso

de funciones, etc.).

Maneja caminos de acceso, como en

el caso de optimización por reglas, e

información volumétrica (tamaños)

sobre las tablas manejadas en cada

consulta. El objetivo es maximizar el

througput o minimizar el uso de

recursos necesarios para procesar

la consulta (minimizar el tamaño de

resultados intermedios para

ejecutar cada operador algebraico).

Es el enfoque clásico de optimización. Para cada resultado intermedio es

necesario evaluar costes de los

métodos alternativos y el tamaño

de dicho resultado intermedio.

Page 26: Procesamiento de Consultas

Información de catálogo

Para cada SGBD es distinta pero al menos tiene para cada

relación:

Nº de tuplas de la relación r (nr)

Nº de bloques que contienen tuplas de la relación r (br)

Tamaño en bytes de una tupla de r (tr)

Factor de bloqueo de r. Nº de tuplas de r que caben en

un bloque. (fr)

Nº de valores distintos del atributo A de la relación (

V(A,r))

Nº medio de tuplas de r que satisfacen una condición

de igualdad sobre el atributo A de la relación r ( CS(A,r) )

oSi A es clave de r CS(A,r)=1

oSi A no es clave de r, CS(A,r)= nr/V(A,r)

Page 27: Procesamiento de Consultas

Información de catálogo

Para los índices:

Grado de salida de los nodos internos del índice i (para

índices B+) (gi)

Altura del índice para el atributo A de r (AAi)

Número de bloques que ocupa el nivel más bajo (nivel

de hojas) del índice i

(MAi)

Page 28: Procesamiento de Consultas

¿Cómo se construye un plan?

Primer paso

– SQL Álgebra Relacional Árbol Canónico

Ejemplo SELECT nombreJugador, nombreEquipo

FROM Jugador J, Equipo E

WHERE J.idEquipo = E.idEquipo

πnombreJugador, nombreEquipo(σJugador.idEquipo=Equipo.idEquipo (Jugador X Equipo))

πnombreJugador, nombreEquipo

σJugador.idEquipo=Equipo.idEquipo

XJugador Equipo

Page 29: Procesamiento de Consultas

¿Cómo se construye un plan?

Segundo paso

– Modificaciones algebraicas sobre el árbol

EjemploπnombreJugador, nombreEquipo

σJugador.idEquipo=Equipo.idEquipo

XJugador Equipo

πnombreJugador, nombreEquipo

⋈Jugador Equipo

πnombreJugador, nombreEquipo

⋈Equipo Jugador

Page 30: Procesamiento de Consultas

Técnicas algebraicas

• Se utilizan Heurísticas

– Se basan en propiedades algebraicas

– Siempre generan árboles equivalentes

– Son reglas que, por lo general, mejoran la

performance de las consultas

Ejemplos

Cascada de selecciones

Bajar selecciones

Bajar proyecciones

Cambiar productos cartesianos por joins

Page 31: Procesamiento de Consultas

¿Cómo se construye un plan?

Tercer paso

– Selección de la implementación de cada

operador

EjemploπnombreJugador, nombreEquipo

Jugador EquipoBNLJ

pipeline

Page 32: Procesamiento de Consultas

Técnicas físicas

Consiste en seleccionar implementaciones para los

operadores basándose en cómo están organizados

los archivos y las estructuras adicionales que existen.

Utilizan una estructura de la BD llamada Catálogo

o Mantiene información estadística acerca de los

datos de las diferentes tablas.

o Se actualiza periódicamente y no están siempre

sincronizadas con los datos reales.

o Permite estimar la selectividad de los diferentes

operadores.

Page 33: Procesamiento de Consultas

Ejercicio

Micro(numMicro, marca, numEmpresa)

Empresa(numEmpresa, nombreEmpresa, fechaCreacion,

direccion)

Viaje(numMicro,fechaViaje,destino)Micro.numEmpresa no admite nulos y es FK de Empresa.

Viaje.numMicro es FK de Micro.

Se desea optimizar la siguiente consulta:

SELECT numMicro, numEmpresa, nombreEmpresa,

fechaCreacion, direccion,destino, fechaViaje

FROM Micro M, Empresa E, Viaje V

WHERE M.numMicro = V.numMicro

AND M.numEmpresa = E.numEmpresa

AND E.fechaCreacion >= ‘1/1/2000’

AND V.fechaViaje >= ‘1/1/2007’

AND V.fechaViaje < ‘1/2/2007’

AND M.marca = ‘Mercedes Benz’

Page 34: Procesamiento de Consultas

Ejercicio

Se tiene como datos:

La longitud de los campos es de 128 bytes cada uno.

Tuplas Micro: 200.000.

Tuplas Empresa: 3.000.

Tuplas Viaje: 2.500.000.

Micros con marca ‘Mercedes Benz’: 50.000.

Viajes de enero del 2007: 100.000.

Empresas creadas desde el año 2000: 2.000.

Además:

Se cuenta con 5 bloques de memoria.

El tamaño de bloque es 2048 bytes.

Se asume distribución uniforme.

a) Armar el árbol canónico de la consulta.

b) Obtener un árbol optimizado, indicando su plan de ejecución, y

calcular los costos.

c) Describir brevemente qué estructura agregaría para mejorar la

performance de la consulta (sin calcular costos).

Page 35: Procesamiento de Consultas

Ejercicio (Solución)

Armar la consulta en álgebra relacional:

Π numMicro, nombreEmpresa, numEmpresa, fechaCreacion,

direccion, destino, fechaViaje

(σ M.numMicro = V.numMicro

AND M.numEmpresa = E.numEmpresa

AND E.fechaCreacion >= ‘1/1/2000’

AND V.fechaViaje >= ‘1/1/2007’

AND V.fechaViaje < ‘1/2/2007’

AND M.marca = ‘Mercedes Benz’

(M x E x V))

Page 36: Procesamiento de Consultas

Ejercicio (Solución)

Árbol canónico:

Page 37: Procesamiento de Consultas

Ejercicio (Solución)

Separar la selección en varias selecciones:

Page 38: Procesamiento de Consultas

Ejercicio (Solución)

Bajar las selecciones que son condiciones de junta para poder

cambiar productos cartesianos por natural joins.

Page 39: Procesamiento de Consultas

Ejercicio (Solución)

Cambiar productos cartesianos + condición de junta por natural

joins

Page 40: Procesamiento de Consultas

Ejercicio (Solución)

Bajar las selecciones hasta las hojas:

Page 41: Procesamiento de Consultas

Ejercicio (Solución)

Proyectar sólo los atributos que se usan:

Page 42: Procesamiento de Consultas

Ejercicio (Solución)

Analizar utilidad de las selecciones:

Page 43: Procesamiento de Consultas

Ejercicio (Solución)

Calcular los costos: