You are on page 1of 47

Administracin de Bases de Datos

Procesamiento y optimizacin de consultas

Objetivos

Comprender las tareas de procesamiento y optimizacin de


consultas realizadas por un SGBD relacional
Conocer reglas heursticas y de transformaciones de expresiones
del lgebra relacional y cmo aplicarlas para mejorar la eficiencia
de una consulta
Conocer diferentes estrategias de implementacin de operaciones
relacionales, en particular del join y cmo evaluar sus costes
Identificar la informacin estadstica de la BD necesaria para
estimar el coste de ejecucin de las operaciones del lgebra
relacional

1
Administracin de Bases de Datos

Procesamiento y optimizacin de consultas

Contenidos

Procesamiento y optimizacin de consultas

Etapas del procesamiento de consultas


Anlisis lxico, sintctico y validacin
Optimizacin

Reglas transformacin

Implementacin de operaciones relacionales

2
Administracin de Bases de Datos

Procesamiento y optimizacin de consultas

Crtica a los primeros sistemas relacionales: bajo


rendimiento en las consultas.
Estudio de algoritmos eficientes para procesar
consultas
En un SGBD...

Consultas expresadas en SQL: Qu datos y no cmo


recuperarlos
El SGBD selecciona la mejor estrategia de ejecucin: el
sistema decide las operaciones necesarias y su orden de
ejecucin

3
Administracin de Bases de Datos

Procesamiento y optimizacin de consultas

Procesamiento de consultas:

actividades involucradas en la recuperacin de datos de la BD

Optimizacin de consultas:

Eleccin de una estrategia de ejecucin eficaz para procesar


cada consulta sobre la BD

La optimizacin automtica es obligatoria se se quiere lograr


un tiempo de consulta aceptable

4
Administracin de Bases de Datos

Procesamiento y optimizacin de consultas

Objetivos del procesamiento de consultas

Transformar una consulta SQL en una estrategia de ejecucin eficaz,


expresada en un lenguaje de bajo nivel
Ejecutar dicha estrategia para recuperar los datos requeridos
Existen muchas transformaciones equivalentes

Objetivos de la optimizacin de consultas

Elegir la estrategia de ejecucin que minimiza el uso de los recursos


En general, el SGBD no garantiza que la estrategia elegida sea la
ptima (pero seguro que es una bastante eficiente)

5
Administracin de Bases de Datos

Procesamiento y optimizacin de consultas

Ventajas de la optimizacin automtica

El usuario no se preocupa de cmo formular la consulta


El mdulo optimizador trabaja mejor que el programador:

Dispone de informacin estadstica en el diccionario de datos


Mayor precisin al estimar la eficiencia de cada posible estrategia
Y as (con mayor probabilidad) elegir la ms eficiente
Si cambian las estadsticas (tras reorganizacin del esquema de la BD), el
mdulo optimizador elige otra estrategia
El mdulo optimizador considera ms estrategias que un
programador
El optimizador contempla toda la experiencia sobre el tema

6
Administracin de Bases de Datos

Procesamiento de una consulta

1. Anlisis lxico, sintctico y validacin

2. Optimizacin

3. Generacin de cdigo

4. Ejecucin

7
Administracin de Bases de Datos

Anlisis lxico, sintctico y validacin

Anlisis lxico
Identificar los componentes lxicos en el texto de la consulta SQL
Anlisis sintctico
Revisar la correccin gramatical de la consulta SQL
Validacin semntica
Verificar la validez de los nombres de las relaciones y atributos
Traduccin de la consulta a una representacin interna
El formalismo usado debe ser:
Rico, para representar toda consulta posible
Neutral, sin predisponer a ciertas opciones de optimizacin
lgebra relacional

8
Administracin de Bases de Datos

Anlisis lxico, sintctico y validacin

Nombres de los empleados que trabajan en el proyecto 2

SELECT nombrep
FROM Empleado E, Trabaja_en T
WHERE E.nss=T.nsse and T.nump>=2;

pnombrep (snump=2 (Empleado nss=nsse TRABAJA_EN))

proyeccin restriccin fusin

9
Administracin de Bases de Datos

Anlisis lxico, sintctico y validacin

pnombrep (snump=2 (Empleado TRABAJA_EN))


nss=nsse

Resultado

rbol de consulta (o rbol


Proyectar(E.nombrep) sintctico abstracto) como
representacin de una
expresin algebraica

restringir(T.nump=2)

Reunir(E.nss=T.nsse)

EMPLEADO(E) TRABAJA_EN(T) 10
Administracin de Bases de Datos

Optimizacin

El optimizador de consultas combina diferentes tcnicas:

Optimizacin heurstica

Ordenar las operaciones en una estrategia de ejecucin

Estimacin de costes

Estimar sistemticamente el coste de cada estrategia

Elegir el plan (estrategia) con el menor costo estimado

11
Administracin de Bases de Datos

Optimizacin heurstica

Aplicacin de reglas heursticas para midificar la representacin


interna de una consulta (lgebra relacional o rbol de consulta)
para mejorar su rendimiento

Varias expresiones del lgebra relacional pueden corresponder a la


misma consulta

Lenguajes de consulta como SQL ...

Permiten expresar una misma consulta de formas diferentes, ...


... pero el rendimiento no debera depender de cmo sea expresada
la consulta

12
Administracin de Bases de Datos

Optimizacin

El analizador sintctico genera un rbol de consulta inicial

Sin optimizacin y por tanto ineficiente

El optimizador de consultas transforma el rbol de consulta inicial


en un rbol de consulta final equivalente pero ms eficiente

Mediante la aplicacin de reglas de transformacin guiadas por


heursticos

Conversin de la consulta a su forma cannica equivalente

13
Administracin de Bases de Datos

Optimizacin

Obtenida la forma cannica equivalente, el Optimizador decide


cmo evaluarla

Estimacin sistemtica de costes:

Estimacin y comparacin de los costes de ejecutar una consulta


con diferentes estrategias, y elegir la de menor coste estimado

El punto de partida es considerar la consulta como una serie de


operaciones interdependientes

Operaciones del lgebra relacional


JOIN, PROYECCIN, RESTRICCIN, UNION, INTERSECCIN, ...

14
Administracin de Bases de Datos

Optimizacin

El Optimizador tiene un conjunto de tcnicas para implementar


cada operacin. Por ejemplo, la operacin s
Bsqueda lineal
Bsqueda binaria
Empleo de ndice primario o clave de dispersin
Empleo de ndice de agrupamiento
Empleo de ndice secundario

Cada procedimiento tiene asociada una estimacin del coste


COSTE = nmero de accesos a bloque de disco necesarios
Debe estimar el tamao actual de las tablas

15
Administracin de Bases de Datos

Optimizacin

Informacin Informacin sobre la


Estadstica interdependencia entre las
(diccionario de datos) operaciones de bajo nivel

OPTIMIZADOR

Eleccin de varias tcnicas


candidatas para cada operacin

16
Administracin de Bases de Datos

Optimizacin

Informacin estadstica
El xito de la estimacin estadstica del tamao y coste de las
operaciones incluidas en una consulta depende de la cantidad y
actualidad de la informacin almacenada en el diccionario de datos
Para cada relacin
Cardinalidad (nmero de tuplas)
Factor de bloque (nmero de tuplas que caben en cada bloque)
Nmero de bloques ocupados
Mtodo de acceso primario y otras estructuras de acceso (ndices,
hash, etc.)
Atributos indexados, de dispersin, de ordenamiento (fsico o no), etc.
Para cada atributo:
Nmero de valores distintos almacenados
Valores mximo y mnimo
Nmero de niveles de los ndices de mltiples niveles

17
Administracin de Bases de Datos

Optimizacin

El optimizador genera varios planes de ejecucin y elige el plan


ms econmico

Plan de ejecucin = combinacin de tcnicas candidatas (una por


cada operacin de bajo nivel de la consulta)

Funcin de cose a minimizar

coste(plan ) i coste(tcn ica i )


Medida en nmero de accesos a bloque (transferencias de bloques
de memoria a disco)

18
Administracin de Bases de Datos

Optimizacin

En general, existen muchos posibles planes de ejecucin


(demasiados!)

La tarea de elegir el plan ms econmico tiene un coste prohibitivo

Uso de tcnicas heursticas para mantener el conjunto de planes de


consulta generados dentro de unos lmites razonables:

se pretende una reduccin del espacio de evaluacin

19
Administracin de Bases de Datos

Reglas generales de transformacin

Una secuencia de restricciones sobre una relacin A puede


transformarse en una sola restriccin
sc1(sc2(A)) = sc1 AND c2(A)
En una secuencia de proyecciones contra una relacin A pueden
ignorarse todas, salvo la ltima (si cada atributo mencionado en
la ltima, tambin aparece en las dems)
pp2(pp1(A)) = pp2(A), sii p2 p1
Una restriccin de una proyeccin puede transformarse en una
proyeccin de una restriccin
sc(pp(A)) = pp(sc(A))
Es mejor hacer restriccin antes
que proyeccin pues la restriccin
reduce el nmero de filas a
considerar
20
Administracin de Bases de Datos

Reglas generales de transformacin

Distributividad respecto a una operacin:


f(A op B) = f(A) op f(b)

Las restricciones son distributivas respecto a la UNIN,


INTERSECCIN y DIFERENCIA
sc(R op S) = (sc(R)) op (sc(S)) donde op ={ , , - }

La proyeccin es distributiva respecto a la UNIN


pp(R S) = (pp(R)) (pp(S))

21
Administracin de Bases de Datos

Reglas generales de transformacin

La restriccin es distributiva respecto a la reunin (JOIN) si la


condicin de seleccin contiene atributos que slo pertenecen a
una relacin
snump=2 (Empleado TRABAJA_EN) =
nss=nsse

EMPLEADO snump=2 (TRABAJA_EN)


nss=nsse

O puede escribirse como (c1 AND c2), y en c1 slo intervienen


atributos de R1 y en c2 slo de R2
sc (R1 R2) = (sc1(R1)) (sc2(R2))
j j

Se reduce el nmero de tuplas a examinar en la siguiente


operacin
22
Administracin de Bases de Datos

Reglas generales de transformacin

Las proyecciones p son distributivas respecto del JOIN si la


condicin de reunin R slo intervienen atributos incluidos en la
lista de proyeccin P

pP (R1 R2) = (pPR1 (R1)) (pPR2 (R2))


R R

sii P = (PR1 UNION PR2) y P incluye todo atributo de reunin que


aparece en R

Tambin se reduce el nmero de tuplas que son examinadas

23
Administracin de Bases de Datos

Reglas generales de transformacin

Conmutatividad
op es conmutativo si A op B = B op A
son conmutativas UNION, INTERSECTION, JOIN
no conmutativas DIFERENCIA
Asociatividad
op es asociativo si A op (B op C) = (A op B) op C
son asociativas UNION, INTERSECTION, JOIN
no asociativas DIFERENCIA
Idempotentes
op es idempotente si A op A = A
son idempotentes DIFERENCIA, UNION, INTERSECTION, JOIN

24
Administracin de Bases de Datos

Reglas generales de transformacin

Expresiones de cmputo escalar


El Optimizador debe conocer reglas de transformacin de
expresiones aritmticas, pues aparecen en las consultas
Reglas de transformacin basadas en propiedades Conmutativa,
Asociativa y distributiva

Expresiones condicionales
El optimizador debe saber aplicar reglas generales a operadores
De comparacin (<,>, ...)
Lgicos (AND, OR, ...)

25
Administracin de Bases de Datos

Reglas generales de transformacin

Sean a y b atributos de dos relaciones distintas


R(...,a,...)
S(...,b,...)
La condicin a>b AND b>3 equivale a a>3 AND b>3 AND a>b
La condicin a>3 permite realizar una restriccin antes del JOIN
entre R y S necesario para evaluar a>b

Sean los atributos a,b,c,d,e,f


La condicin a>b OR (c=d AND e<f) equivale a
(a>b OR c=d) AND (a>b AND e<f)
OR distributivo respecto al AND
Toda expresin condicional puede transformarse en su Forma
Normal Conjuntiva (FNC)
26
Administracin de Bases de Datos

Reglas generales de transformacin

Una FNC tiene la forma C1 AND C2 AND ... CN donde Ci no


incluye ningn AND
Es TRUE si todo Ci es TRUE, y es FALSE si algn Ci es FALSE

Ventajas de la FNC

Ya que AND es conmutativo, el Optimizador puede evaluar cada Ci


en cualquier orden (por ejemplo, en orden creciente de dificultad).
En cuanto un Ci es FALSE, el proceso puede acabar!

En un entorno de procesamiento paralelo, es posible evaluar todos


los Ci a la vez. Y en cuanto uno diera FALSE, el proceso acabara

27
Administracin de Bases de Datos

Reglas heursticas

Ejecutar las operaciones de restriccin s tan pronto como sea


posible

Ejecutar primero las restricciones ms restrictivas (las que


producen menor nmero de tuplas)

Ejecutar las operaciones de proyeccin p tan pronto como sea


posible

28
Administracin de Bases de Datos

Implementacin del JOIN

Tcnicas para realizar una reunin:

Fuerza bruta
Bsqueda por ndice
Bsqueda Hash
Mezcla
Hash
Combinacin de las anteriores

El coste asinttico debera calcularse en trminos de nmero de


accesos a bloques de disco (no a tuplas)

29
Administracin de Bases de Datos

Implementacin del JOIN

Tcnicas para realizar una reunin:

Fuerza bruta
Bsqueda por ndice
Bsqueda Hash
Mezcla
Hash
Combinacin de las anteriores

El coste asinttico debera calcularse en trminos de nmero de


accesos a bloques de disco (no a tuplas)

30
Administracin de Bases de Datos

Implementacin del JOIN por fuerza bruta

Examinar todas las posibles combinaciones de tuplas R y S

for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if (R[i].k = S[j].k) aadir R[i]+S[j] al resultado

O(m*n)

31
Administracin de Bases de Datos

Implementacin del JOIN por bsqueda por ndice

Existe un ndice X sobre el atributo S.k

for(i=1;i<=m;i++)
// existen t entradas de X con valor de atributo R[i].k
for(j=1;j<=t;j++)
aadir R[i]+S[j] al resultado

O(m*t*log n) donde suponemos n >> t*log n

32
Administracin de Bases de Datos

Implementacin del JOIN por bsqueda hashing

Existe un Hash H sobre el atributo S.k

for(i=1;i<=m;i++)
// existen t tuplas accesibles desde H(R[i].k)
for(j=1;j<=t;j++)
aadir R[i]+S[j] al resultado

O(m*t) donde suponemos n >> t

33
Administracin de Bases de Datos

Implementacin del JOIN por mezcla

Considera R y S ordenadas segn el atributo de reunin


Pueden examinarse ambas tablas en una nica pasada
comparndolas simultneamente

O(m+n) Supone las dos tablas ordenadas O(mlogm+nlogn)

34
Administracin de Bases de Datos

Implementacin del JOIN por Hash

Necesita una nica pasada sobre los datos de cada relacin

1) Construir una Tabla Hash H sobre S.k

2) Examinar R y aplicar la misma funcin de Hash sobre R.k


Si una tupla R colisiona en H con tuplas de S, entonces se generan
las tuplas reunidas

No es necesario tenerlas ordenadas

O(n+m)

35
Administracin de Bases de Datos

Optimizacin en MySQL

La optimizacin requiere la comprensin de todo el sistema

Compromiso entre el tiempo que requiere encontrar la mejor


optimizacin y la mejora en eficiencia

http://www.mysql.com/information/benchmarks.html

http://www.mysql.com/information/crash-me.php

SELECT benchmark(loop_count, expression)

36
Administracin de Bases de Datos

EXPLAIN

EXPLAIN SELECT select_options

Explica cmo se procesar la operacin SELECT, cmo se


reunirn (JOIN) las tablas y en qu orden

Con la ayuda de EXPLAIN podemos averiguar cuando debemos


aadir nuevos ndices a las tablas para hacer los SELECT ms
eficientes

Deberamos ejecutar ANALYZE TABLE frecuentemente para


obtener estadsticas sobre la cardinalidad de claves que
pueden afectar a las elecciones del optimizador

37
Administracin de Bases de Datos

EXPLAIN

EXPLAIN SELECT select_options

Explica cmo se procesar la operacin SELECT, cmo se


reunirn (JOIN) las tablas y en qu orden

Con la ayuda de EXPLAIN podemos averiguar cuando debemos


aadir nuevos ndices a las tablas para hacer los SELECT ms
eficientes

STRAIGHT_JOIN para forzar el orden de un SELECT

Deberamos ejecutar ANALYZE TABLE frecuentemente para


obtener estadsticas sobre la cardinalidad de claves que
pueden afectar a las elecciones del optimizador

38
Administracin de Bases de Datos

EXPLAIN

Las tablas aparecen en el orden en que son procesadas

table type possible_keys key key_len ref rows Extra


et ALL PRIMARY NULL NULL NULL 74
do ALL PRIMARY NULL NULL NULL 2135
et_1 ALL PRIMARY NULL NULL NULL 74
tt ALL AssignedPC, NULL NULL NULL 3872
ClientID,
ActualPC

74 * 2135 * 74 * 3872 = 45,268,558,720

39
Administracin de Bases de Datos

EXPLAIN

Soluciones:

Aadir ndices

SHOW INDEX FROM table

Myisamchk analyse table

ANALIZE TABLE

OPTIMIZE TABLE

40
Administracin de Bases de Datos

WHERE

Elimina parntesis innecesarios

((a AND b) AND c OR (((a AND b) AND (c AND d)))) =>


(a AND b AND c) OR (a AND b AND c AND d)

Substitucin de constantes

(a<b AND b=c) AND a=5 =>


B>5 AND b=c AND a=5

Eliminacin de condiciones constantes

(b>=5 AND b=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6) =>
B=5 OR B=6

41
Administracin de Bases de Datos

Otras optimizaciones

DISTINCT

LEFT JOIN, RIGHT JOIN

ORDER BY

LIMIT

INSERT

UPDATE

DELETE

42
Administracin de Bases de Datos

Optimizacin de la estructura de la BD

Ocupar el mnimo (en tamao de datos e ndices)

Las lecturas de disco sern ms rpidas


Los ndices ocupan menos sobre campos pequeos

Usar los tipos ms eficientes posible (ms pequeos)


Declarar los campos NOT NULL
Usar tamaos fijos de registro (varchar, TEXT, BLOB)
Slo crear los ndices necesarios (los UPDATES son ms lentos
con ms ndices)

43
Administracin de Bases de Datos

Los ndices

Se almacenan aparte de los datos!


Optimizan la clusula WHERE
Optimizan las operaciones JOIN
Localizan el MIN y MAX del campo indexado
Ordena o agrupa una tabla
Algunas veces permite ahorrarnos la consulta de los datos!
Comparar valores con LIKE Name%
Podemos indexar prefijos de campos
Pueden indexarse todos los tipos de campo

44
Administracin de Bases de Datos

Diferentes configuraciones

Segn las distintas cargas esperadas

my-small.cnf

my-medium.cnf

my-large.cnf

my-huge.cnf

45
Administracin de Bases de Datos

Replicacin

Mejora la robustez y la velocidad

Puede mantener varias copias de la BD. Una acta


de MASTER y la otra de SLAVE.

Todas las actualizaciones (UPDATE, INSERT,


DELETE) se realizan sobre el MASTER

Todas las consultas pueden derivarse a mltiples


SLAVE

46
Administracin de Bases de Datos

Replicacin

Mejoramos la robustez porque siempre tenemos una


copia actualizada que podemos usar de backup

La velocidad la mejoramos al distribuir nuestra


carga de consultas sobre diferentes rplicas del
servidor

El MASTER genera un diario binario (binary log)

Los SLAVE consultan el diario para sincronizarse con


el servidor

47

You might also like