Вы находитесь на странице: 1из 36

Optimizacin de

Consultas
Base de Datos II

Introduccin

Dada un expresin del lgebra relacional el Optimizador de


Consultas (OC) debe producir un plan de ejecucin que
calcule el resultado de la manera menos costosa.
La generacin de planes de ejecucin implica dos etapas:

Generar expresiones que sean lgicamente equivalentes


a la expresin de la consulta.

Anotar las operaciones con los algoritmos a utilizar.

Introduccin

Un Plan de Ejecucin define:

El algoritmo que debe ser utilizado para cada operacin.


El orden de evaluacin de los operaciones.

Optimizacin basada en costo

Dados dos planes de ejecucin la diferencia en tiempo de


ejecucin entre ambos puede ser enorme.

Los pasos de la Optimizacin Basada en Costo son:

Segundos Vs Das
Generar expresiones lgicamente equivalente basada en
reglas de equivalencias
Anotar cada expresin de manera a obtener diferentes planes.
Escoger el plan ms barato basado en un costo estimado.

La estimacin del costo de los planes se basa en:

Informacin estadstica acerca de la relaciones.


Br, Fr, MBi, Aai
Informacin estadstica acerca de los resultados intermedios.
Estimacin del costo de los algoritmos usando como entrada la
informacin estadstica

Trasformacin de las expresiones

Dos expresiones se dicen equivalentes si generan el


mismo conjunto resultado en cada ejemplar legal de
la base de datos.
Una regla de equivalencia indica las dos formas
equivalentes de una expresin.

Se puede substituir una expresin de la primera


forma por otra equivalente de la segunda forma y
viceversa.

El optimizador hace uso de la reglas para transformar


las expresiones en otras equivalentemente lgicas.

Reglas de equivalencia
1.

Las condiciones conjuntivas pueden descomponerse


en una secuencia de selecciones individuales.
1 2 ( E ) 1 ( 2 ( E ))

2.

Las operaciones de seleccin son conmutativas.


1 ( 2 ( E )) 2 ( 1 ( E ))

3.

Slo la ultima operacin de proyeccin es necesaria,


las otras pueden omitirse.
L1 ( L2 ( ( Ln ( E )) )) L1 ( E )

4.

Las selecciones pueden combinarse con los productos


cartesianos y con las reuniones zeta

(E1 X E2) = E1

1(E1

E 2) = E 1

E2
1 2

E2

Reglas de equivalencia
5.

Las reuniones zeta y reuniones naturales


conmutativas.
E1 E2 = E2 E1

6.

(a) Las operaciones de reunin natural son


asociativas.
(E1 E2) E3 = E1 (E2
E3 )
(b) Las operaciones de reunin zeta son asociativas
en la siguiente manera.
(E1 1 E2)
2 3 E3 = E1
1 3 (E2
2 E3)
Donde 2 solo involucra atributos de E2 y E3

Reglas de equivalencia
7.

La operacin de seleccin se distribuye sobre la


operacin de reunin zeta cuando:
a)

La condicin de seleccin solo involucra a atributos de


una de la relaciones (en este caso E1).
0E1 E2) = (0(E1)) E2

b)

Cuando las condiciones de seleccin involucran de


forma separada a atributos de una de las relaciones.
1 E1 E2) = (1(E1)) ( (E2))

Reglas de equivalencia
8.

La proyeccin se distribuye sobre una reunin zeta de


la siguiente manera:
a)

Si la condicin slo involucra atributos de L1 U L2

L1 L2 ( E1
b)

Dada la reunin E1

E2 ) ( L1 ( E1 ))

( L2 ( E2 ))

E2 y,

Siendo L1 y L2 atributos de E1 y E2 respectivamente.


Siendo L3 atributos de E1 involucrados en la condicin de
reunin pero que no estn en L1 U L2.
Siendo L4 atributos de E2 involucrados en la condicin de
reunin pero que no estn en L1 U L2.

L L ( E1
1

E2 ) L L (( L L ( E1 ))
1

( L L ( E2 )))
2

Reglas de equivalencia
9.

Las operaciones de unin e interseccin son conmutativas.


E1 E2 = E2 E1
E1 E2 = E2 E1

10.

Las operaciones de unin e interseccin son asociativas.


(E1 E2) E3 = E1 (E2 E3)
(E1 E2) E3 = E1 (E2 E3)

11.

La seleccin es distributiva sobre las operaciones de unin


interseccin y diferencia.
(E1 E2) = (E1) (E2).
Lo cual tambin es vlido para y

12.

Adems:
(E1 E2) = (E1) E2
Vlido para , pero no para
La proyeccin es distributiva sobre la operacin de unin.
L(E1 E2) = (L(E1)) (L(E2))

Ejemplo de transformaciones

Considerando los siguientes esquemas:

Esquema-sucursal = (nombre-sucursal, ciudad-sucursal,


activo)
Esquema-cuenta = (nmero-cuenta, nombre-sucursal,
saldo)
Esquema-impositor = (nombre-cliente, nmero-cuenta)

La consulta en el algebra relacional:


nombre-cliente ( ciudad-sucursal =Arganzuela saldo >1000 ( sucursal
(cuenta
impositor)))
Se transforma en:
nombre-cliente (( ciudad-sucursal =Arganzuela (sucursal)
saldo >1000 (cuenta)) impositor)

Ejemplo de transformaciones

Orden de las reuniones

Gracias a la asociacin de las operaciones de reunin


se puede elegir cual calcular primero en funcin al
tamao del resultado generado.
Si se tiene que calcular r1 r2 r3, esto se puede
calcular como:

(r1

r2)

r3, o como

r1

(r2

r3 )

Se elige la opcin que requiera de menor espacio


temporal.

Orden de las reuniones

Si se tiene que calcular (r1 r2) r3, pero resulta que r1


y r2 no tienen atributos en comn, la operacin
degenera en (r1 x r2) r3.

Si r1 y r2 son relaciones grandes se requerir del uso


de mucho espacio temporal
Si r3 tiene atributos en comn con r1 y r2 entonces la
operacin se puede transformar en (r1 r3) r2.

(r1

r2)

r1

(r2

r3)

r1

(r3

r2)

(r1

r3)

r3

r2

Por asociatividad se puede elegir la operacin que


requiera menor tamao temporal.

Enumeracin de expresiones
El optimizador aplica sistemticamente las reglas de
equivalentes

equivalencia para generar expresiones equivalentes a


la consulta dada.
Se pueden generar todas la expresiones como sigue:

Repetir hasta que todas las expresiones hayan sido


procesadas.

Seleccionar una expresin no procesada.


Aplicar cada regla de equivalencia aplicable.
Agregar las nuevas expresiones al resultado.

El enfoque anterior es muy costoso en trminos de


tiempo y espacio.

Eleccin de los planes de

evaluacin
Se debe considerar las diferentes tcnicas de

evaluacin de la operaciones cuando se escogen los


planes.

Escoger el algoritmo menos costoso de cada operacin


independientemente no lleva siempre al mejor plan.

El join por mezcla podra ser un poco ms costos que un


join por hash, pero puede proporcionar un resultado
ordenado que podra reducir el costo de las operaciones
siguientes.
El Join por bucle anidado puede dar oportunidad al
encausamiento de operaciones.

En la prctica los optimizadores incorporan elementos


de los siguientes enfoques:

Buscar todos los planes y escoger el mejor basado en un


enfoque de seleccin basada en costo.
Usar heursticas para escoger los planes.

Optimizacin Basada en Costo

Los optimizadores basados en el coste generan


una gama de planes de evaluacin a partir de la
consulta dada empleando las reglas de equivalencia y
escogen el de coste mnimo.
Considerar buscar el mejor ordenamiento para
r1 r2 . . . rn .

Hay (2(n 1))!/(n 1)! rdenes de reunin diferentes.


Con n = 7 son 665280 y con n = 10 son ~= 17.600
millones.

No es necesario generar todos los ordenes, utilizando


Programacin Dinmica se puede calcular el orden
de algn subconjunto y luego utilizarlo ms tarde.

Programacin Dinmica en
Para buscar el mejor rbol de join de n relaciones
Optimizacin

Considerar todos los planes de la forma:


S1
(S S1) donde S1 es un subconjunto no vaco de
S.
Computar recursivamente el costo de cada subconjunto
de reunin de S. Escoger la ms barata de las 2n 1
alternativas
Caso base de la recursin: acceso a una sola relacin.

Utilizar el modo de acceso ms apropiado.

Cuando se computa el plan para cualquier subconjunto,


se guarda el resultado para utilizarlo cuando sea
requerido nuevamente, en vez de volver a calcularlo.

Esto se denomina Programacin Dinmica

Algoritmo de PD para la Reunin


procedure hallarmejorplan(S)
if (mejorplan[S].coste )
return mejorplan[S]
if (S contiene slo una relacin)
establecer mejorplan[S].plan y mejorplan[S].coste en trminos
de la mejor forma de acceder a S
// mejorplan[S] no se ha calculado anteriormente
else for each subconj. no vaco S1 de S t.q. S1 S
P1 = hallarmejorplan(S1)
P2 = hallarmejorplan(S S1)
A = mejor algoritmo para reunir P1 y P2
coste = P1.coste + P2.coste + coste de A
if coste < mejorplan[S].coste
mejorplan[S].coste = coste
mejorplan[S].plan = ejecutar P1.plan; ejecutar
P2.plan; reunir resultados de P1
y de P2 utilizando A
return mejorplan[S]

rboles de Join

Los ordenes de reunin por la izquierda son


aquellos en los que el operando de la derecha de cada
reunin es una de la relaciones iniciales.
Son convenientes para evaluaciones encauzadas.
El tiempo de consideracin de todos los ordenes
por la izquierda es O(n!).

Costo de la optimizacin

La complejidad temporal del algoritmo de P.D. es O(3n).


Con n = 10 son 59.000 pasos en vez de 17.600 M.
La complejidad espacial es O(2n)
Para encontrar el mejor ordenamiento en profundidad por la
izquierda de n relaciones:
Considerar n alternativas con una de la relaciones como
entrada derecha y las otras relaciones como entradas
izquierdas.
Lo que modifica el algoritmo de optimizacin de PD
Reemplazando el for each subconj. no vaco S1 de S t.q.
S1 S por for each r en S, haciendo S1 = S-r
Cuando se consideran solo los ordenamientos en profundidad por
la izquierda el costo temporal del algoritmo es O(2n).
La optimizacin basada en costos es costosa, pero vale la pena
para BD grandes, en especial si las consultas son pequeas
(n<=10).

Orden Interesante

Considere la expresin (r1 r2) r3, con un atributo comn A.


Un orden interesante es un ordenamiento de las tuplas que
puede ser til en operaciones posteriores.
Utilizar Merge-Join para r1
r2 puede ser mas costoso que un
Hash-Join, pero generara el resultado ordenado por A.
Pero esto podra ser til para hacer un Merge-Join con r3.
Un resultado ordenado tambin es til para agregaciones,
ordenamiento o agrupamiento.
No es suficiente buscar independientemente el mejor orden de
reunin de n relaciones.
Hay que halla el mejor orden de reunin para cada orden
interesante
Se extiende el algoritmo de optimizacin de PD para que
aparte del orden de reunin tambin considera si en el
conjunto existe un orden interesante aprovechable.
Usualmente solo se da un pequeo nmero de ordenes
interesantes, lo que no aumenta la complejidad temporal y
espacial del alg. de PD

Optimizacin Heurstica

La optimizacin basa es costo es costosa aun con PD y sus


mejoras.
Los SGBD pueden aplicar Heursticas para reducir el nmero de
posibilidades a ser consideradas en un anlisis de costo.
Las Heursticas son transformaciones en el rbol de la consulta
que por lo general (no siempre) disminuyen el costo de
procesamiento.

Realizar las selecciones los ms antes posible.


Descomponer las condiciones conjuntivas.
Desplazar las selecciones lo ms hacia abajo en el rbol.
Realizar las proyecciones los ms antes posible.
Dividir la lista de atributos de manera a realizar las proyecciones
primero (desplazarlas lo ms hacia abajo en el rbol).
Realizar primero operaciones de join o seleccin ms restrictivas.
Sustituir selecciones sobre productos cartesianos por joins basados en
la condicin de seleccin.
Dar prioridad a la posibilidad de realizar operaciones encauzadas.

Optimizacin Heurstica

Las heursticas tratan de reordenar el rbol para


reducir el tamao de los datos intermedios lo
antes posible.
Las heursticas pueden aplicarse para determinar
varios planes basados en caminos de accesos
existentes

Esta fase de seleccin del plan de acceso del


optimizador heurstico selecciona la estrategia ms
eficiente para cada operacin.

Anteriormente muchos SGBD solo realizaban


Optimizaciones basadas en Heursticas.

No tenan un optimizador basado en costo

Estructura de los Optimizadores

La mayora de los optimizadores solo considera ordenaciones


profundas por la izquierda.

Aplicando heursticas para realizar antes selecciones y


proyecciones.
til para reducir la complejidad de optimizacin y generar planes
que aprovechen el encauzamiento.

Antiguas versiones de Oracle solo posean un optimizador


heurstico

Buscar repetidamente la siguiente mejor relacin de forma


heurstica para una reunin.

Evaluando n planes para cada una de las n relaciones como punto de


partida.

SQL introduce un alto grado de complejidad en los


Optimizadores cuando se presentan consultas anidadas.

Subconsultas, op. de conjuntos (unin, interseccin, dif.).


Se analiza cada parte por separado y luego se combinan en un
plan global.

Estructura de los Optimizadores

Algunos optimizadores combinan heursticas de


seleccin y estrategias de generacin de planes.

Un enfoque puede ser:

An cuando la optimizacin basada en costo puede ser


costosa y suponer una sobrecarga:

Reescritura de operaciones basadas en heursticas


Optimizacin del ordenamiento de joins basada en costo.

El mejoramiento de consultas costosas supone una


ganancia.

As los optimizadores aplican heursticas para


consultas sencillas y realizan una enumeracin
exhaustiva para consultas complejas.

Informacin Estadstica

nr : nmero de tuplas en la relacin r

br : nmero de bloques que contienen tuplas de la


relacin r

nr
br
fr

tr : tamao de las tuplas de la relacin r en bytes

fr : factor de bloqueo, numero de filas de la relacin r


que caben en un bloque
V(A, r) : nmero de valores distintos del atributo o
conjunto de atributos A en la relacin r

Informacin Estadstica

Histogramas:

Guarda informacin acerca de la distribucin de los valores en


un atributo de una relacin.
Esto ayuda al optimizador a estimar con mayor precisin el
nmero de filas.

Sin esta informacin solo se puede suponer que la distribucin es


uniforme.

Estimacin del tamao de la

relaciones
La estimacin del tamao de una seleccin depende de la

condicin
A=v(r)

nr / V(A,r), lo que supone una distribucin uniforme.

Aun as normalmente es una aproximacin razonable.

1, cuando la condicin es sobre una clave candidata.

A v(r) (el caso A v(r) es simetrico)

Si estn disponible las informaciones min y max en A

c = 0 si v < min(A,r)

c = nr .

v min( A, r )
max( A, r ) min( A, r )

Si existe un histograma es posible refinar la aproximacin


En ausencia de informacin estadstica el tamao estimado es
nr / 2

Selecciones complejas

La selectividad si de una condicin i es la probabilidad de


que una tupla satisfaga i .

si = |1(r)|| / nr

Conjuncin: 1 2. . . n (r). Asumiendo independencia, el


numero estimados de tuplas es igual a:

s1 s2 . . . sn
nr
nrn

Disjuncion:1 2 . . . n (r). El nmero estimado de tuplas


es:

sn
s1
s2
nr 1 (1 ) (1 ) ... (1 )
nr
nr
nr

Negation: (r). El nmero estimado de tuplas es


nr size((r))

Tamao de las reuniones

El producto cartesiano r x s contiene nr x ns tuplas de


tamao tr + ts bytes.

Si R S = , r s se reduce a un producto cartesiano r x


s.
Si R S es una clave de r, cada tupla de s se rene con al
menos una tupla de r, siendo el nmero de tuplas en r s
es como mximo igual al nmero de tuplas de s
Si R S es una clave fornea que referencia a r, entonces
el nmero de tuplas en r s es igual al nmero de tuplas
de s.
El caso es simtrico para un clave fornea que
referencia a s.

Tamao de las reuniones

Si R S = {A} no es una clave de r o s, y adems se


asume que cada fila de r est en el resultado, entonces el
nmero de filas en r s es estimado como:
nr ns
V ( A, s )

Si se cumple lo inverso, entonces el tamao se estima por:


nr ns
V ( A, r )

Por lo general el menor de estos dos valores es la


estimacin ms exacta.
Las estimaciones anteriores se pueden mejorar si se
disponen de histogramas

Tamao de otras operaciones

Proyeccin: tamao estimado de A(r) = V(A,r)

Agregacin: tamao estimado de AgF(r) = V(A,r)

Operaciones de conjuntos
Uniones / Intersecciones en la misma relacin:
Se aplica el tamao estimado de las selecciones

1 (r) 2 (r) = ||1 (r) || + ||2 (r)||

Para operaciones en diferentes relaciones:

r s = nr + ns.

r s = min (nr , ns).

rs

= nr.

Todos estos valores pueden no ser una buena estimacin,


sin embargo proporcionan un limite superior para los
valores reales.
Outer join:
r
s = ||r
s || + nr (right outer join es simetrico)

s = ||r

s || + nr + ns

Estimacin de valores distintos


Selecciones : (r)

Si indica un valor especfico ( A= 3), etonces:


V(A, (r)) = 1.

Si indica un conjunto de valores:


V(A, (r)) = nmero de valores especificados.

Si la condicin es de la forma A op r, siendo op un


operador de comparacin
V(A, (r)) = V(A, r) * s
Donde s es la selectividad de la operacin.
Los casos restantes se aproximan por:
min(V(A,r), n (r) )

(A = 1 or A = 3 or A = 4)
V(A, (r)) = 3

Estimacin de valores distintos


Joins: r
s
Si todos los atributos en A son de r, la estimacin es:

V(A, r
s) = min (V(A, r), n
Caso simtrico para s

Si A contiene atributos A1 de r y A2 de s, entonces la


estimacin esta dada por:

V(A, r

s) = min(V(A1, r) * V(A2 A1, s),


V(A1 A2, r) * V(A2, s), nr

Estimacin de valores distintos

Los valores distintos en proyecciones, agrupaciones y


agregaciones son iguales al de la relacin.

V(A, r)

En operaciones de agregacin:

Para min(A) y max(A), el nmero de valores distintos se


estima como min(V(A, r), V(G, r)), donde G denota a
los atributos de agrupamiento.
Para otras agregaciones (suma, cuenta, promedio) se
supone que todos los valores son distintos usndose
como estimacin a V(G, r)

Вам также может понравиться