Documente Academic
Documente Profesional
Documente Cultură
E.T.S. Ingeniera
Informtica
INTRODUCCIN .................................................................................... 3
DESCOMPOSICIN DE CONSULTAS................................................. 5
3.1
3.1.1
3.1.2
3.1.3
3.2
3.2.1
3.2.2
3.2.3
3.3
3.4
3.4.1
3.4.2
3.4.3
OPTIMIZACIN DE CONSULTAS......................................................13
4.1
4.2
4.2.1
4.2.2
4.2.3
Planes dinmicos...................................................................................................................................................13
Planes estticos......................................................................................................................................................13
Comparacin enfoque esttico/dinmico ........................................................................................................14
4.3
OPTIMIZACIN BASADA EN REGLAS (RULE BASED) ...............................................14
4.4
OPTIMIZACIN BASADA EN COSTES (COST BASED)................................................14
4.4.1
Problemtica de estimacin de costes ...............................................................................................................14
4.4.2
Estimacin de factores de selectividad..............................................................................................................15
4.4.3
Mantenimiento de estadsticas de la BD...........................................................................................................15
Pg. 2 de 15
1 Introduccin
Obtener un resultado en un ambiente de gestin de archivos convencionales requiere la
elaboracin (diseo, edicin, compilacin, montaje, catalogacin y pruebas) de un programa
de aplicacin. Queda en mano del programador la responsabilidad de seleccin del mejor
mtodo posible para obtener el resultado esperado que satisfaga la exigencia o especificacin
del resultado.
El proceso de consultas en bases de datos relacionales deja al programador de aplicaciones en
un escenario distinto al anterior; la razn es el empleo de lenguajes de especificacin1: si se
utiliza un lenguaje de especificacin el programador no tiene que disear ni generar
un mtodo para ejecutar la especificacin o consulta requerida, es decir el
programador es introducido en un escenario no procedural, no est obligado a crear
mtodos ni procedimientos para obtener los datos, slo a especificar los datos que
requiere. Ejemplo: si en un programa de aplicacin se inserta una instruccin SQL del tipo:
SELECT NMatricula,Nombre,Asignatura,Nota FROM notas WHERE curso= 3.
Lo nico que est aportando el programador es la especificacin de los datos requeridos
(qu datos requiere?), pero a diferencia de la obtencin de datos en un ambiente de archivos
convencionales no especifica el algoritmo o mtodo de obtencin (cmo o por qu camino
obtenerlos?).
Se plantea pues: Quin o qu artefacto y cmo llega a fijarse el mtodo de obtencin de los
datos para una especificacin o consulta?; la respuesta es El procesador de consultas (PQ)
del gestor de la base de datos relacional; PQ asociar la mejor alternativa posible de
ejecucin a una especificacin: el plan de ejecucin. El plan de ejecucin ser un
programa en cdigo a bajo nivel (cdigo mquina o cdigo eficiente (al menos ms que el
cdigo fuente de la especificacin de la consulta) interpretable por el SGBD) generado por el
PQ para la especificacin o requerimiento de la consulta deseada.
Claro est que este nuevo escenario no slo goza de ventajas (simplificacin del paradigma de
programacin, pues no hay que pensar en mtodos) y acarrea una problemtica a resolver en
el seno del SGBD: Cmo seleccionar el mejor plan de ejecucin posible de entre todos los
que existen?
Ejemplo Sea la base de datos de una bodega:
Vinos(w#,vino,vendimia,graduacin),
Productores(p#,productor,regin),
Cosechas(p#,w#,cant)
y la consulta
q(SQL) 2( AR) =
( Cosechas Vinos )
Los lenguajes de especificacin son lenguajes de manipulacin de datos que permiten manipular conjuntos.
Pg. 3 de 15
luego si se reduce el tamao de los resultados intermedios, podr afirmarse que una
alternativa tendr un tiempo de ejecucin menor (en un escenario monotarea o concurrente).
Bajo una mtrica, para este ejemplo, de las relaciones:
Cardinalidad(Vinos)=500 tuplas, Card(Cosechas)=1200 tuplas, Card(cant>100(Cosechas))=100,
T:Tamao uniforme para las tuplas de Vinos, Productores y Cosechas.
el tamao mximo de los resultados intermedios sera2:
tamao( 1) = tamao(vinos ) + tamao(
cant >100
2
3
Pg. 4 de 15
Descomposicin
Esquema
conceptual
i(q)
Optimizacin
Esquema interno
Estadsticas BD
(q)
Ejecucin
Argumentos
resultado
Una vez generado el plan (q), este podr ejecutarse con el suministro de parmetros que
convenga (generacin dinmica de planes de ejecucin o enfoque de interpretacin) o bien
catalogarse y cargarse en memoria las veces que sea necesario (generacin esttica de planes
de ejecucin o enfoque de compilacin).
Se estudiarn las dos fases de descomposicin y optimizacin de consultas.
3 Descomposicin de consultas
El objetivo es generar un programa algebraico i(q) partiendo de la expresin de la consulta
en un lenguaje de especificacin contra un esquema externo: q(
).
Ya se ha visto en la introduccin que, en general, para una consulta q(
) puede existir un
espacio de soluciones (no necesariamente finito) o expresiones algebraicas Q q() ={
i(q)}.
Q q(), lo que no se
El primer problema, pues, es seleccionar un programa algebraico i(q)
presente como trivial ni inmediato.
El camino de esta seleccin o bsqueda no pasa por la bsqueda exhaustiva ni por mtodos
de exploracin de dicho espacio de soluciones sino ms bien por la aplicacin de heursticas
que permitan seleccionar una solucin admisible. Se contemplan una serie de etapas hasta
llegar a dicho programa algebraico con el menor coste posible, por lo que si se detectan
inconvenientes que no permitan continuar, el proceso abortar en la etapa correspondiente.
Pg. 5 de 15
Normalizacin de expresiones.
Anlisis semntico.
Simplificacin de expresiones.
Reestructuracin algebraica.
Las tres primeras etapas son problemas bien tratados en el seno de los procesadores de
lenguaje y se revisarn en este documento; la ltima, la reestructuracin algebraica, ser objeto
de estudio en detalle.
Pg. 6 de 15
H.cant>=100
H.p#=P.p#
El grafo es conexo en el
camino que asocia las
relaciones con el resultado.
P.region=Andaluca
W.w#=H.w#
W.vino
Resultado
H.cant>=100
W.vino
Resultado
El grafo no es conexo en el
camino que asocia las
relaciones con el resultado.
No existe condicin de join
entre Cosechas y Vinos, con
lo que se est generando una
operacin
algebraica
producto cartesiano entre
ambas.
Pg. 7 de 15
WHERE
W.w#=H.w#
AND
H.p#=P.p#
AND
P.region='Andaluca'
AND
H.cant>=100
>=
100
P.region
Andaluca
W.w#
H.w#
H.p#
P.p#
modo siguiente:
-100
H.cant
-Andaluca
0
W.w#
Andaluca
P.region
H.w#
( P. p # H . p #+ 0) ( H . p # P. p #+ 0) P. p # = H . p #
0
H.p#
P.p#
-13
( A 13) (0 A 13)
12
WHERE
cosecha=1982
AND
grado<=11;
Pg. 8 de 15
es una consulta cuya condicin es contradictoria con Is, de modo que para cualquier estado
de la BD se generar un resultado vaco para q, luego no tiene sentido generar el plan de
ejecucin de dicha consulta. El plan debe ser rechazado por razn de contradiccin
semntica con la metabase de datos, ya que el grado de un vino de la cosecha de 1982 no
puede ser simultneamente mayor que doce y menor que doce. El GNCA debe resolverse
para la conjuncin de la condicin de la consulta y las condiciones de Is.
11
grado
-12
1982
1982
Cosecha
( )
Ejemplo:
SELECT region FROM Productores
WHERE nombre='Osborne' OR NOT (region='Jerez')
q
AND (region='Jerez' OR region='La Mancha')
Sustituyendo:
r (nombre='Osborne');
p (region='Jerez');
q (region='La Mancha')
r ( (.F .) ( p q )) q ) r ( p q q ) r ( p .F .) r (.F .) r
WHERE nombre='Osborne'
Pg. 9 de 15
Card(R)
Card(R)
R R '
Card(R) Card(R)
R6 R '
Card(R) log(Card(R))
Card(R) log(Card(R))
Mientras que restricciones y proyecciones tienen costes que varan linealmente con el tamao
de las relaciones, el producto cartesiano tiene una funcin cuadrtica y la combinacin (join)
un coste semicuadrtico.
Las operaciones ms comunes en las consultas son los joins entre relaciones; por lo que se
prestar especial atencin a su orden de resolucin.
Pg. 10 de 15
WHERE
W.w#=H.w#
AND
H.p#=P.p#
AND
P.region='Andaluca'
AND
H.cant>=100
vino
Region=Andaluca
Y Cant>=100
p#
w#
Vinos
p#
w#
Cosechas
Productores
R6 S 6 T R6 S 6 T
f
g
f g
R R
Aq =b Ap = a Ap = a Aq =b
R4. Commutatividad restriccin/proyeccin
R R
X Ap = a X Ap = a X Ap
R5. Commutatividad restriccin/join
R 6 S R 6 S
Ap = a R. Ai = S . Ai Ap = a R. Ai = S . Ai Ap = a
Pg. 11 de 15
(R S ) R S
(R S) R S
Ai = a
Ai = a
Ai = a Ai = a
Ai = a Ai = a
R7. Commutatividad proyeccin/join
R 6 S R 6 S
R. X , S .Y R. Ai = S . Bj R. X , S .Y R. X Ai R. Ai = S . Bj S .Y Bj
R8. Commutatividad proyeccin/unin
(R S ) R S
X
X X
p#
p#,vino
w#
w#,vino
w#
p#,w#
Cant>=100
Vinos
Cosechas
p#
Regin=Andaluca
Productores
se obtiene este rbol equivalente que representa un programa algebraico ms eficiente que el
programa algebraico de partida.
Pg. 12 de 15
4 Optimizacin de consultas
4.1 Fase de optimizacin
La fase de optimizacin de una consulta tiene por objeto generar el plan de ejecucin para la
consulta a partir del programa algebraico generado en la fase anterior de descomposicin.
Deben contemplarse diversos aspectos en esta fase de optimizacin:
a) El momento o modo de generacin del plan.
b) La estrategia de optimizacin de operadores algebraicos del programa.
En cuanto al momento de generacin, se contemplan:
Planes dinmicos
Planes estticos
de
en
en
de
Tam(R):
Dom(A):
Ndist(A):
Max(A):
Min(A):
Para poder estimar los tamaos de los resultados intermedios se recurre al concepto de
factor de selectividad: s, entendido como la proporcin de tuplas que forman parte de un
resultado intermedio.
Lo normal es estimar s o factor de selectividad. Se plantea un enfoque de estimacin de este
factor para diversas operaciones.
Pg. 14 de 15
Card R = S Card ( R )
f f
6f
Para la restriccin:
s
s
s
1
Ndist ( A)
Max(a ) a
s ( A>a ) = Max( A) Min(a)
a Min(a )
s ( A<a ) = Max( A) Min(a)
( A= a )
( A{ } )
= s ( A= a )Card ( )
( P Q )
= s ( P )s ( Q )
( PQ )
= s ( P ) + s (Q ) s ( P ) s (Q )
Para el join:
Puede considerarse una cota mxima
6 f
1
Card ( R 2)
Pg. 15 de 15