Professional Documents
Culture Documents
` Comprender las tareas de procesamiento y optimización de
consultas realizadas por un sistema gestor de bases de datos
relacional.
` Conocer reglas heurísticas y de transformación de expresiones
del álgebra relacional y cómo aplicarlas para mejorar la
eficiencia de una consulta.
` Conocer diferentes estrategias de implementación de
operaciones relacionales, en particular la de reunión (× , y
cómo evaluar el coste estimado de cada estrategia.
` 0dentificar la información estadística de la base de datos
necesaria para estimar el coste de ejecución de las
operaciones del álgebra relacional.
|
p
G
p
. Procesamiento y optimización de
consultas
ÿ
- D
D
!"
#$%&
'D%(()* D
+D
!"
,- #$ %.&
'$%((* $
!"#
$
!
+ D
!
"
#$%&
p
º
p
lección de una estrategia de ejecución eficaz para procesar cada
consulta sobre la base de datos
a
[automática^ es...
ƛ n :
obligatorio si se debe lograr un tiempo de ejecución de consultas aceptable
ƛ na
:
el alto nivel semántico de una expresión relacional permite su optimización
antes de la ejecución
ß
p
o
p
X
p
(
! $
%&
'
(
)
* +
p
(
! $
%&
'
$
%&
ƛ ,
los (léxicos en el texto de la consulta (·
$
ƛ £
la
&
de la consulta (corrección gramática
ƛ
la validez de los de las tablas, vistas, columnas, etc. y si
tienen sentido
-
de la consulta una
ƛ que la "
,
ƛ
del lenguaje de alto nivel empleado (./,
Ë l formalismo base de la representación interna debe ser...
ƛ
, para representar toda consulta posible
ƛ , sin predisponer a ciertas opciones de optimización
Ëa mejor elección: ë£
A
p
(
! $
%&
'
(y 2
[
!"!#[$! "%
(
(
l Optimizador de Consultas suele combinar varias técnicas
as técnicas principales son las siguientes:
ƛ
0
> las operaciones de la consulta para
la
de su
ƛ+
> stimar sistemáticamente el
de ejecución y
> +
el plan (estrategia con el estimado
||
p
(
(
(2
1
$
0
modificar la representación interna de una consulta 2ë
£
ë3a fin de
|G
p
(
(
(3
l $
genera
ƛ sin optimización m ejecución ineficiente
l
de Consultas de consulta
inicial en
equivalente y eficiente
´Aplicación de
guiadas por 0
|
p
(
(
(4
Obtenida la forma canónica de la consulta, el Optimizador decide
+
sistemática :
+
'
|º
p
(
(
(5
l Optimizador tiene un conjunto de %
para realizar cada
operación
1
2(
(
(3
((3
4 +5
(
4 +5
+(
(
4 6(*(
(
7$( (3
4 6(#)
(
4 6(
(
|ß
p
(
(
(6
,
0nformación sobre la
+
de bajo nivel
(diccionario de datos
-,4,5$ £
+
de varias %
para cada operación
|o
p
(
(
(7
l ,
m Para cada
ƛ
(nº de filas,
ƛ 6" (nº de filas que caben en un bloque,
ƛ Nº de ",
ƛ 4%
estructuras de acceso (a a,índices,etc.,
ƛ
&, de
, de
(físico o no, etc.
m Para cada
ƛ Nº de
almacenados,
ƛ alores &
, etc.
m Nº de niveles de cada
7
(
(
(
l Optimizador genera
+
combinación de %
candidatas
Ü | una técnica por cada operación elemental de la consulta
Cada técnica tendrá asociada una
2%
389"
ƛ Medida en número de transferencias de bloques memoria V disco
ƛ /
, pues para estimar el nº de
accesos a bloque es necesario estimar el tamaño de las tablas (base o
generadas como resultados intermedios, lo cual depende de los valores
actuales de los datos
|
p
(
(
(y 9
l Optimizador
Para ello formula una
que se debe minimizar
23ó
2%
3
|A
p
)£
&
£
| na secuencia de restricciones sobre una tabla A puede transformarse en una
sola restricción
C1 ( (A ó
C2 C1 ANå C2(A
G n una secuencia de proyecciones contra una tabla A pueden ignorarse todas,
salvo la última (si cada columna mencionado en la última, también aparece en
las demás
p (p
P2 P1 (A ó p (A ,
P2 sii P2 P1
)£
&
£
(2
l
·ea f un operador unario y Ù un operador binario,
Ù
2$Ù ÿ382$3Ù 2ÿ3
G|
p
)£
&
£
(3
o es distributivo respecto de 0[-/[ (,-[ si la condición de selección ...
> contiene columnas que sólo pertenecen a una tabla
se 7
&
en secuencia: join
(así, esa operación será más rápida
y también producirá menos filas
GG
p
)£
&
£
(4
X p es distributivo respecto de ,-[ si en la condición de reunión , sólo
intervienen columnas incluidos en la lista de proyección *
G
p
)£
&
£
(5
l
·ea Ù un operador binario, Ù es conmutativo si A Ù B B Ù A , A,B
l ,
·ea Ù un operador binario, Ù es idempotente si A Ù A A, A
)£
&
£
(6
+&
ƛ l Optimizador debe conocer
&
%
, pues aparecen en las consultas
ƛ Reglas de transformación basadas en propiedades Conmutativa, Asociativa
y åistributiva
+&
(booleanas
ƛ l Optimizador debe saber aplicar reglas generales a
>
(, , ... y
>
(#[$, , ...
Gß
p
)£
&
£
(7
·ean
, R(...a... y ·(...b...
&
#[$'
- la condición &
#[$' equivale a &
'#[$&'#[$&
'
por ser Ơ>ơ un operador transitivo
cla Ơnuevaơ condición &
', permite realizar una
((3 (sobre
,-[ entre R y · ( × necesario para evaluar &
'
&
&''
& &''
)£
&
£
(y
6
>&
6=tiene la forma
8 #[$ #[$!!!
donde cada ( incluye ningún #[$
- s 0 si todo ( es 0, y #
7( #
m
6=
- Ya que #[$ es conmutativo, el Optimizador puede (
"
(por ejemplo, en orden creciente en dificultad.
+( %#'
- n un
, sería posible
( . n cuanto uno diera #, el proceso acabaría
GX
p
)£
&
£ 0
Algunas 0
que pueden ser aplicadas durante
el procesamiento de consultas
! jecutar
( jecutar
(las que producen menor nº de filas
)
un
î
con una
subsiguiente cuya condición represente una condición de reunión,
%×
*,
,
&JOIN'
as %
para realizar una reunión pueden ser las siguientes:
1. 6ÿ
2. ÿ7"?
3. ÿ7"Ú
4. 4
5. Ú
6. Combinaciones de las anteriores
GA
p
*,
,
&JOIN'
Por
, los algoritmos han sido codificados
con los siguientes :
a tabla tiene filas y la tabla tiene filas en total.
a columna de reunión es simple, se llama , y se denomina
igual en ambas tablas.
·e considera que las filas de cierta tabla están almacenadas en
un con igual nombre que la tabla.
Cada (
está contenida en una posición del .
a (3 (
se expresa mediante el producto de dichas
filas (operador entre posiciones del .
p
*,
0mplementación de JOIN por
xaminar las
£
Para cada fila de Ô obtener todas las de y probar si satisfacen la condición de
reunión
&("8%(? %(::'
&"8%? %::'
(&;(<!"";<!'
=
(
(
(
;(<>;<
%
Cálculo del
1. Operaciones de de filas m * n
2. Operaciones de
de filas cardinalidad del × resultado
2.a Caso de × (es decir, clave candidata / clave externa
cardinalidad del × resultado cardinalidad de la tabla con la clave externa (m ó n
2.b Caso de ×
·ea dCR nº valores distintos de la columna de reunión C en la tabla R y
dC· nº valores distintos de la columna de reunión C en la tabla ·
(estimación suponiendo una
de los valores de la columna C
åos puntos de vista: (ver transparencia siguiente
|
p
*,
0mplementación de JOIN por (y 2
Para cada fila de habrá filas de con el mismo valor de
i
nº total de filas en el × (a
i
Para cada fila de habrá filas de con el mismo valor de
i
nº total de filas en el × (b
i
·i ® , las estimaciones (a y (b son diferentes
ƛ xiste algún valor de que ocurra en pero no en , o viceversa
ƛ Cardinalidad del × resultado menor estimador
*,
0mplementación de JOIN por 7"
xiste un índice 2 sobre la columna ! de la tabla interior
&("8%(? %(::' A>B
( >A
A>B(
C
D(2;8<!!2;C<
7
(B
()
;(<!>A
&"8%? C%::'A>(
( >A
A>
;<
(
(B
2;<>A
=
(
(
(
;(<>;<
%
p
*,
0mplementación de JOIN por 7"
(y 2
º
p
*,
0mplementación de JOIN por 7"
a
, es decir, las
filas de · están almacenadas en un fichero organizado según la técnica a a
(aunque en el algoritmo se representa como un
l algoritmo es similar a la 5
D(, pero el camino de acceso a ·
según la columna de reunión ·.C es una tabla a a y no un índice
A>
a a !>A
&("8%(? %(::'F A>B
( >A
C"G
G&;(<!'% A>B(
G(
;8<!!;G<
;C<>A
&"8%? G%::' A>(
( >A
(&;<!"";(<!'
=
(
(
(
;(<>;<
%
H
ß
p
*,
0mplementación de JOIN por
Considera
según valores de la columna de reunión
- Ambas pueden examinarse según el orden físico y de forma sincronizada
- l JOIN completo puede realizarse en una 7
sobre los datos
Ö -%
> Cada bloque se Ɲtocaƞ una sola vez (× uno-a-muchos
> Nº bloques leídos
6
:
A>
JOIN G I
IG >A $
de datos relacionados
""8% lógicamente (
0
JG(&?KK?'F A>B
( >A n ausencia del
, una
7";<!% o ambas
en tiempo de
&"%;<! 7%::'% ejecución y mezclarlas (
: técnica
"%
&"%;<!""7%::' A>(
( ((
>A
&("%;(<!""7'
=
(
(
(
;(<>;<
%
"%
&("%;(<!""7%(::'%
"(%H
o
p
*,
0mplementación de JOIN por 00
Necesita una 7
de cada tabla
1er Paso:
para !
Cada entrada de contiene:
- alor de ! y (opcional valores de otras columnas de
- Puntero a la fila correspondiente
2º Paso: +&
!
·i una fila de
en con filas de , entonces
si !"!, se generan las filas reunidas adecuadas
X
p
*,
0mplementación de JOIN por (y 2
A>
(
a a !>A
&"8%? %::'F
C"G
G&;<!'%
=
(;<!A> (EL
)57
L>A
(
;<
;C<
G
G%
H
A>5
>A
&("8%(? %(::'F
C"G
G&;(<!'% A>B(
G(
;8<!!;G< ;C<>A
&"8%? G%::'
(&;<!"";(<!'
=
(
(
(
;(<>;<
%
H
p
-
: la que sólo es válida debido a
cierta restricción de integridad (de tipo cualquiera, no sólo R.0.
Referencial
: proceso de
"
(cualitativamente diferente pero
que garantiza el mismo resultado
, gracias a que
los datos satisfacen
especificadas
sobre el esquema de base de datos
l JOIN hace corresponder una clave externa (en #+#,#[, que es [
[0, por ser parte de la *N con su correspondiente clave candidata (nss en
*#$,
Cada fila de #+#,#[
tiene como contrapartida alguna de
*#$,
así que cada fila de #+#,#[ contribuye con valor de al resultado
global,
Para el resultado no se pide ninguna columna que Ơsólo estéơ en *#$!
º
p
p &#+#,#['
-
sólo
ƛ Cada fila de #+#,#[ corresponde a una fila en *#$, debido a la
y a la
ƛ n general, cada operando de un ,-[ contiene
en el
otro operando y por tanto, que contribuyen al resultado;
'
º|
p