Optimización de consultas - Departament d`Informàtica

Anuncio
Optimización de consultas
Bases de datos II: Tema 7
BDII
1
Estructura del tema
1.
2.
3.
4.
Introducción: un ejemplo motivador.
Panorama general del procesamiento de consultas.
Algoritmos básicos para ejecutar operaciones de consulta.
Transformación de expresiones relacionales: reglas de
equivalencia.
5. Optimización de consultas:
1.
Uso de la heurística
2.
Uso de las estadísticas de la BD.
6. Bases de datos estadísticas.
7. Optimización semántica de consultas.
BDII
2
1
Un ejemplo motivador
Objetivo: seleccionar una estrategia eficiente para la
evaluación de una expresión relacional dada.
En las BDS se utilizan lenguajes no procedurales para
interrogarlas: se dice lo que se busca pero no como
hacerlo.
El SGBD es el responsable de determinar como se
accede a la información y construir una buen plan de
ejecución.
Nota: el nombre optimizador de consultas no es en
realidad muy apropiado puesto que no se encuentra
una estrategia óptima, únicamente mejor (más
eficiente) que la original.
BDII
3
Un ejemplo motivador…
Supongamos BD proveedores y partes:
V( V#, proveedor, estado, ciudad)
P(P#, parte, color, peso, ciudad)
VP( V#,P#,cantidad)
Consulta: obtener el nombre de los proveedores que
proporcionan la parte ‘p2’;
select proveedor from VP, V where vp.v#=v.v#
and v#=‘p2’;
Supongamos que la BD contiene 100 proveedores y
10000 envíos, de los cuales 50 son de la parte ‘p2’
BDII
4
2
Estrategia 1:
„
Reunior vp y v (sobre v#)
„
Restringir el resultado del paso 1 a las tuplas
‘p2’.
Resultado 50 tuplas
Proyectar el resultado del paso 2 sobre proveedor.
Resultado 10000 tuplas
„
Estrategia 2:
„
„
„
Restringir vp a las tuplas para la parte ‘p2’
Resultado (50 tuplas)
Reunir el resultado del paso 1 con la tabla v
(sobre v#)
Involucra leer 100 proveedores y produce un
resultado de 50 tuplas
Proyector el resultado del paso 2 sobre proveedor.
BDII
5
1 Ejemplo motivador…
Resultado: si tomamos la cantidad de E/S como
medida de eficiencia
„ Estrategia 1: 1.030.000 tuplas(1000000+3*10000)
„ Estrategia 2: 10.100 tuplas (10000+100)
Estrategia más
eficiente
Conclusión: parece preferible restringir antes de
reunir y se pueden incluso incluir otras mejoras en
caso de que algunos de los atributos anteriores
estuvieses indexados.
BDII
6
3
2. Panorama general
Se pueden identificar cuatro etapas en el
procesamiento de consultas.
1.
Convertir la consulta a su forma interna
2.
Convertir a la forma canónica.
3.
Seleccionar procedimientos candidatos de bajo
nivel.
4.
Generar planes de consulta y seleccionar el más
barato
BDII
7
2. Panorama general
[Etapa 1:]Convertir la consulta a su forma interna:
Conversión de la consulta original en alguna forma que sea más
adecuado para manejarla internamente. Por lo general se
utiliza algún tipo de árbol como son los árboles de consulta
(árbol algebraico de la expresión algebraica que representa la
consulta)
select apellido, nombre from empleado
where salario> (select max(salario) from empleado
where numd =5)
= c
FMAX(SALARIO) (rnumd= 5 (empleado)
Papellido,nombre (Rsalario>c (empleado)
BDII
8
4
2. Panorama general…
[Etapa 2:]Conversión a la forma canónica
El optimizador realiza varias optimizaciones que son garantizadas
como buenas sin tener en cuenta los valores actuales de la BD.
Se aplican ciertas reglas de transformación para conseguirlas.
Veremos el conjunto de reglas después.
[Etapa 3:] Selección de procedimientos candidatos de
bajo nivel.
Se decide como debe ejecutar dicha consulta transformada a su
forma interna. Se tienen en cuenta las diversas rutas de acceso
al dato, el agrupamiento físico de los datos, las distribuciones de
valores de los datos.
La estrategia básica consiste en especificar una serie de
operaciones de bájo nivel (reunir, restringir, resumir…). Para
cada una de estas operaciones existen diferentes algoritmos
implementados predefinidos con diferentes funciones de coste.
BDII
9
2. Panorama general …
[Etapa 4:] Generación de los planes de consulta y
selección del más barato.
En general pueden haber demasiados planes por lo que se
construyen únicamente algunos que por heurística son más
barato (restringimos el espacio de búsqueda) y se elige el mejor
de ellos.
Se utilizan funciones de costo asociadas a cada procedimiento que
en general dependen del tamaño de las tablas. El optimizador
necesitará alguna forma de deducir tamaños de los resultados
intermedios. (Estadísticas de la BD)
BDII
10
5
2. Panorama general…
Consulta
Original
Procesador DML
BD
Consulta
Compilada
Metadatos
Optimizador
BD
Plan de
Consulta
Datos
Administrador en
Tiempo de ejec.
Análisis sintáctico,
Procesamiento de
Vistas, traducción
Expresión de
Álgebra relacional
Transformación de
la expresión, estimación
de costes…
Código optimizado
Ejecución
Resultado
BDII
11
Algoritmos básicos para ejecutar operaciones
de consulta
Un SGBD debe contar con algoritmos para
implementar los distintos tipos de operaciones
relacionales:
„ Ordenación
„ Selección
„ Reunión
„ Operaciones de agregación
„ Operaciones de conjuntos
BDII
12
6
3. Implementación operaciones…
Ordenación
El algoritmo de ordenación es básico en el
procesamiento de consultas. Se necesita cuando:
„
„
„
„
Resultado ordenador (ORDER BY)
Se desean eliminar duplicados (DISTINC)
Operaciones de reunión
Y operaciones de conjuntos.
El algoritmo habitual para grandes ficheros de datos
consiste en la estrategia ordena-mezcla que va
ordenando pequeños ficheros y después los mezcla.
El coste de estos algoritmos corresponde al coste de
la ordenación (a*log(a)) y el coste de la mezcla
(a+b).
BDII
13
Restricción:
Métodos de búsqueda para condición simple.
Búsqueda lineal
Empleo de un índice
Métodos de búsqueda para condición compleja
Condiciones conjuntivas:
Selección conjuntiva empleando un índice individual
Selección conjuntiva con un índice compuesto.
Selección conjuntiva por intersección de punteros a
registros
Condiciones disyuntivas:
En este caso poco se puede optimizar.
BDII
14
7
Empledo(nss,nombre,apellido,inic, fecha_naci, sexo, salario,nss_superv, nd)
Departamento(numerod, nombred, nss_jefe, fecha_inic_jefe)
Proyecto(numerop,nombrep,localizacionp,numd)
Trabaja_en(nsse,np,horas)
Op1: empleado.NSS = ‘1223567’
Op2: departamento.numerod > 5
Op3: empleado.nd=5
Op4: empleado.Nd =5 and empleado.salario>3000 and
empleado.sexo =‘M’
Op5: trabaja_en.nsse=‘123456’ and trabaja_en.np=10
Se busca la mejor via de acceso a los datos: si
Existe un índice se utiliza y si no se accede
Secuencialmente. Si la condición es compleja, se
Accede en primer lugar a la condición más restrictiva.
Por ejemplo en Op4 se elegiría la más restrictiva
BDII
15
Reunión: es una de las operaciones más costosas.
Reunión de bucle anidado ( secuencial)
Reunión por bucle único (cuando existe alguna
estructura de acceso (índice) para extraer los registros
coincidentes)
Reunión por ordenación-mezcla. Primero se ordenan las
relaciones implicadas y después se mezclan.
Reunión por dispersión: una de las relaciones operando se
dispersa por el atributo de reunión y después
se accede secuencialmente a la otra relación.
Reunión con índice es una de las relaciones operando:
la relación que no está indexada se accede secuencialMente y para cada tupla se accede a la otra relación a
través del índie.
Reunión con índice en las dos relaciones: se mezclan los dos
índices para conseguir un conjunto de parejas (TID1,TID2)
de tuplas coincidentes.
Reunión por índice de reunión: es un índice especial para la
realización de reuniones.
BDII
16
8
Operaciones de agregación. Cuando los operadores de
agregación (MIN, MAX,COUNT, AVERAGE, SUMA), se
pueden calcular mediante un acceso secuencial o
mediante el índice adecuado. Ejemplo:
Si existe
Índice en el campo
Salario se puede
Utilizar para encontrar
El máximo
select max(salario)
from empleados;
BDII
17
Operaciones de conjuntos. Estas operaciones tienen
implementaciones costosas (union, intersección,
diferencia de conjuntos y producto cartesiano).
La operación producto cartesiano debe evitarse por
su elevado coste.
Las otras tres operaciones en general se
implementan mediante la técnica ordena mezcla.
BDII
18
9
Transformaciones de expresiones de álgebra
relacional.
Una misma consulta en álgebra relacional se puede
expresar de varias formas equivalentes.
Para ello se utilizan las siguientes reglas de
equivalencia.
1.
2.
3.
4.
Cascada de restricciones: una condición de restricción conjuntiva
puede descomponerse en una secuencia de operaciones de
restricción individuales.
Conmutativad de la restricción.
Cascada de proyecciones: en una cascada de proyecciones
podemos ignorar todas menos la última
Conmutatividad entre restricción y proyección. Si la proyección
se realiza sobre [a1…an] y la restricción sobre b1, entonces se
debe proyectar sobre el atributo sobre el que se realiza la
restricción.
BDII
19
Transformaciones
5.
6.
7.
8.
9.
10.
11.
Conmutatividad de la reunión.
Conmutatividad de la restricción y la reunión.
Conmutación de la proyección con la reunión: supongamos que
la lista de proyecciones es L=[a1,…an]. Si la reunión se realiza
sobre un atributo bi entonces la conmutación implica
proyecciones adicionales sobre el atributo de reunión.
Conmutatividad de las operaciones de conjuntos: la operación
unión e intersección son conmutativas. La resta no.
Asociatividad de la reunión, y las operaciones de conjuntos
siguientes: unión, intersección y producto cartesiano.
Conmutación de restricción y operaciones de conjuntos.
La proyección se conmuta con la unión
BDII
20
10
Optimización de consultas: representación de la
consulta
La consulta expresada en cálculo relacional se debe
tranformar en una representación interna para que el
SGBD la optimice.
La consulta en cálculo relacional se pasa a álgebra
relacional. Para la representación interna de la
expresión de álgebra relacional se utiliza una
estructura de datos árbol: árbol de consulta.
Las hojas del árbol corresponde a las entradas , y
las operaciones algebraicas corresponden a nodos
internos.
BDII
21
Ejemplo: Supongamos la siguiente notación para cada
una de las operaciones algebraicas:
p1
cond
A=B
select p.nmerop, p.numd,e.apellido, e.direccion, e.fecha_nac
from proyecto as p, dpartamento as d, empleado as e
where p.numd=d.numerood and d.nss_jefe=e.nsss and
p.localizacion=‘Madrid’
Representamos esta consulta con un árbol equivalente
de consulta
BDII
22
11
Equivalencia de árboles de consulta
p.numerop, p.numd, e.apellido
e.direccion, e.fecha_nac
p.numerop, p.numd, e.apellido
e.direccion, e.fecha_nac
p.localización=
‘Madrid’
Nss_jefe = nss
e.apellido
e.direccion,
ha_nac
Numd =numerod
p.numerop,
p.numd
Nss_jefe = nss
E
Numd =numerod
P
localización=
‘Madrid’
P
D
BDII
E
numerod
D
23
Optimización de consultas: estimación de costes
Un optimizador de consultas no depende exclusivamente de
reglas heurísticas: comparan los costos de ejcución de consultas
con diferentes estrategias de ejecución.
Se necesita una función de coste para minimizar.
En general, el coste de ejecución de una consulta incluye los
siguientes componentes:
„ Costo de acceso al almacenamiento secundario
„ Costo de almacenamiento intermedio
„ Costo de cómputo: coste de ejecutar operaciones en la
memoria
„ Costo de comunicación: coste relacionado con enviar la
consulta y sus resultados
BDII
24
12
Información del catálogo utilizada para la
función de coste
Para estimar las funciones de coste se necesita cierta
información que se mantiene en el catálogo
(diccionario de datos) del sistema.
Estadísticas sobre la BD: a nivel de relación y a nivel
de atributo:
Cardinalidad
Tamaño tupla
Proporción de tupla
Que participan en una reunión
Dom(A): Cardinalidad del dominio
ndist(A):Número actual de
valores distintos
Max(A)
Min(A)
Se asume normalmente: independencia entre los
diferentes valores del atributo y la distribución
uniforme de los valores del atributo en su dominio.
BDII
25
Cardinalidad del resultado de una selección es
función de la cardinalidad de los operandos y del
factor de selectividad de la condición s.
Factor de selectividad de una condición: proporción
de tuplas en una BD que satisfacen una condición
Cardinalidad del resultado de la selección sobre R:
S*Card(R)
S*Card(R1)^*Card(R2)
Estimación exacta del factor s es dificil. Suposiciones
típicas:
„ Valores del atributo distribuidos uniformemente
„ Independencia entre atributos.
BDII
26
13
Factores de selectividad para la selección:
„ S(A=valor)= 1/ndist(A)
„ S(A>valor) = max(A) –valor/max(A)-min(A)
„ S(A<valor) = valor – min(A)/ max(A) – min(A)
„ S(A in valores) = s(A=valor)*card(valores)
„ S(p and q) =s(P)*s(Q)
„ S(P or Q) = s(P) + s(Q) – [s(P) *s(Q)]
Estimaciones más exactas requieren información
estadística más detallada (histogramas, distirbuciones
de probabilidad)
BDII
27
Estimación del factor de seletividad para la reunión
no es posible en general
„ Utilización de s=1 (iguala el coste de una reunión
al del producto cartesiano).
„ Caso frecuente: reunión basada en la clave de R1
y clave ajena en R2 s=1/card(R2)
Se ha demostrado que el plan óptimo para la mayoría
de las consultas es insensible a la exactitud del factor
de selectividad en la reunión: estimadores no muy
exactos son suficientes para la selectividad de la
reunión (~1/10)
BDII
28
14
Algoritmo por búsqueda exhaustiva
Algoritmo para la optimización basado en la búsqueda
exhaustiva:
„ Se busca la mejor vía de acceso a una relación para las
operaciones de selección.
„ Se consideran dos posibles vías: la más barata sin orden y la
más barta que consigue un resultado ordenado. Se
selecciona una vía dependidendo de la importancia del orden
final.
„ Se analizan las reuniones: cardinalidad del resultado se
predice como el producto de la cardinalidad de los operando
por el factor de selectividad de la reunión.
„ Se busca el mejor orden para las reuniones. Se considera la
mejor via de acceso para la relación.
BDII
29
Optimización semántica de consultas
Existe un enfoque diferente para la optimización de
consultas: optimización semántica de consultas
Normalmente se utiliza en combinación con lo
anteriormente estudiado.
La idea básica consiste en utilizar las restricciones
existentes sobre la BD para descartar ciertas
consultas cuyo resultado es vacio.
Ejemplo:
Select e.apellido, g.apellido
From empleado as e, empleado as g
Where e.nss_superv=g.nss and e.salario> g.salario
Esta consulta
Obtiene los apellidos de los
Empledos que ganan más que sus
Supervisores.
BDII
30
15
Descargar