You are on page 1of 41

› 

  


 
  


` 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 
       
 

› 
  


 
  
 


›.1. Conceptos generales y objetivos del procesamiento y la


optimización de consultas
›.2. Pasos del procesamiento de una consulta
1. Análisis léxico, sintáctico y validación
2. Optimización
›.3. Reglas generales de transformación de expresiones y reglas
heurísticas
›.4. 0mplementación de operaciones relacionales
Anexo. Otros enfoques de la optimización: optimización semántica

G
p 
       
 

›. Procesamiento y optimización de
consultas

ÿ



-  D
    
  
 
  

D   
 !"
 #$%&
'D%(()* D
   
 
  
  


 +D 
 !"
 ,-    #$ %.&
'$%((* $  


  
 

  
 !"#  

 $

!  +  D 
 !
"
 #$%&

Œ
p 
       
 

› !    



 
 a los primeros sistemas basados en el modelo relacional:
 

  de las consultas
Ë0nvestigación y desarrollo de 


 para procesar consultas
 n un 
   
 ...
ƛ Consultas expresadas en lenguaje procedural de bajo nivel (embebido, norm.
ƛ l usuario (programador selecciona la   


Ë


   
> åecide las 
  necesarias y su  de ejecución
> ·i se equivoca, 
    

 
> åebe tener  

  

(si no los tiene, no se beneficiará de la posibilidad de consultas más óptimas
 n un 
  
 ...
ƛ Consultas expresadas con · :  datos y no CÓMO recuperarlos
ƛ l ÿ 
    


ƛ y tiene mayor    el  

  del sistema
Ë


  


º
p 
       
 

› !    




   
Actividades involucradas en la recuperación de datos de la Bå




   
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 
       
 

› !    





    
 ransformar una consulta ·  en una   

 

, expresada en un lenguaje de bajo nivel
 jecutar dicha estrategia para recuperar los datos requeridos
ƛ xisten muchas transformaciones equivalentes para una misma
consulta




   
 legir la   

 que




ö n general, 
 "  

 por el
·Bå  la 
, pero seguro que será una   

   

 

o
p 
       
 

› !    



   de la optimización automática
ƛ l usuario  se  de   formular la consulta
ƛ l Módulo 

  Ơ ơ que el programador, pues:
m åispone de
 
  
 en el diccionario de datos del ·Bå
> mayor precisión al estimar la eficiencia de cada posible estrategia...
> y así (con mayor probabilidad elegirá la más eficiente
m·i  
  
 (tras reorganización física del esquema de Bå,...
Ë£#


 (quizá ahora convenga elegir   estrategia
> ·Bå Relacional: (trivial l Optimizador re-procesa la consulta original
> ·Bå No Relacional: modificación del programa!
m l Optimizador es un programa
Ëtiene más paciencia que un programador:  
   

m l Optimizador es el   

 

 de los
mejores programadores

X
p 
       
 

› (
    

! $ 

%&
'

 


( 



)  
 

* +


 studiaremos con detalle los dos primeros pasos

›
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
[   
   


   
 
 
 



 !"!#[$!  "%

p &     " &*#$ " #+#,#[ ''


 


 
&!  ' ë  

 ()(&!  "' (o árbol sintáctico abstracto
 es la  
  
 (&!"!' &
 

 
*#$&'#+#,#[&'
|
p 
       
 

› (
    
( 



 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 
 

 

 arias expresiones del Álgebra Relacional pueden corresponder a


la misma consulta
 enguajes de consulta, como ·  permiten expresar una misma
consulta de muchas formas diferentes, pero el rendimiento no
debe depender de cómo sea expresada la consulta

|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


ËConversión de la consulta en su   


"
 


p 
       
 

› (
    
( 


 (4
 Obtenida la forma canónica de la consulta, el Optimizador decide
  

 +

 sistemática  :
+

   
      
   
   
' 
  

    


 l punto de partida es considerar la    como una serie de



   
 
 
| Operaciones del Álgebra Relacional:
,-[*.-/[--/[0[-[-[-/[...


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( 
(

 Cómo elige el Optimizador las técnicas adecuadas en cada caso?


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 éxito de la estimación del tamaño y del coste de las operaciones incluidas


en una consulta, depende de la cantidad y actualidad de la información
estadística almacenada en el diccionario de datos del ·Bå
|X
p 
       
 

› (
    
( 


 (›
 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 %

38 9"
 

ƛ 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
 2 3ó
 2 %

3

 n general, existen 0ë  


 

 para una consulta
Ëa tarea de      
,   
 0


:
Ë·e suele hacer uso de %
0
 para mantener el conjunto
de planes de consulta generados dentro de unos límites razonables:

 ;

 <

|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

Œ na restricción de una proyección puede transformarse en una proyección de


una restricción
s una buena idea hacer
C (p (A  ó p (
P P C (A   

  " 
 ,
pues la restricción reduce el tamaño
de la entrada para la proyección
(el número de filas que considerar
G
p 
       
 

› )£   
 &
 
£    
 (2
l
 



·ea f un operador unario y Ù un operador binario,

 

 Ù 
2$Ù ÿ382$3Ù 2ÿ3

º es distributivo respecto de la 0[-/[, -[-/[ y $-[-#

C (R· ó ( C (R  ( C (·


donde   { , , Ü } se  7 

&
 

 

 en secuencia: 
ß p es distributivo respecto de la 0[-/[ (así, esa operación será más rápida
y también producirá menos filas
p (R· ó (p (R  (p (·
P P P

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

  "&*#$ "#+#,#['ó *#$ " & '


  "&#+#,#['

> o puede escribirse como &8#[$', y en 8sólo intervienen columnas de 8


y en sólo hay columnas de 

&8 , 'ó & 8&8'' , & &''

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 *

p*&8 , 'ó &p*8&8'' &p*&''


,

sii *"&*8 *' y * incluye toda columna de reunión que aparece en ,

se  9 


"   

 

 en secuencia: × 
(por tanto, esa operación necesitará
menos tiempo para su ejecución
y producirá menos columnas 


p 
       
 

› )£   
 &
 
£    
 (5
l   


·ea Ù un operador binario, Ù es conmutativo si A Ù B  B Ù A , A,B

› n Álgebra Relacional, son conmutativas: 0[-/['-[-/[ y ,-[


y no conmutativas: $-[-# y $-9--/[
l $



·ea Ù un operador binario, Ù es asociativo si A Ù (BÙC (AÙB Ù C , A,B,C

A n Álgebra Relacional, son asociativas: 0[-/[, -[-/[ y ,-[


y no asociativas: $-[-# y $-9--/[

l ,   

·ea Ù un operador binario, Ù es idempotente si A Ù A  A, A

| n Álgebra relacional, son idempotentes : 0[-/[, -[-/[ y ,-[


y no idempotentes: $-[-# y $-9--/[

p 
       
 

› )£   
 &
 
£    
 (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
> 
 (#[$, , ...


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 &
'

&
 &''
 &  &''

 ·ean  '''''


- a condición (
 &"#[$  '  equivale a
oda expresión condicional
&
"'#[$&
 ' puede transformarse en su
puesto que  es distributivo respecto de #[$ 6 = 
 
26=3
Go
p 
       
 

› )£   
 &
 
£    
 (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,
 

%   × 

* +  las operaciones de  


  p    



p 
       
 

› *,   
  
 
,   
 
 &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

 åaremos alguna indicación del cálculo del coste, en términos de


número de accesos a bloques de disco

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

 n la práctica interesa el  / " (no a filas


 ·ea  (y  el nº filas de  (o  en un bloque
 
?  ocupa bloques y ocupa bloques de disco
 
 ecturas de bloques: ejemplo con "8@@"8@!@@@"8"8@
 
¿@& 
 

  
 
 
¿&
  @
  
 
Ö Conviene que la
&
    (la q ocupa menos bloques
ŒG
p 
       
 

› *,   
  
 
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

=
(
(
 (
;(<>;<
 
 %

m entaja sobre la  E



: 
  (vía índice a las 
 de 

  con cada fila de 
- Nº total de filas leídas de  y   cardinalidad del resultado
- peor de los casos: 
 leída de  está  un "
  del disco
  
- Nº total de bloques leídos  
 i 
- ·i "8@@"8@!@@@"8"8@"8@@, el total de bloques leídos es 8@!8@@

ŒŒ
p 
       
 

› *,   
  
 
0mplementación de JOIN por 7" 
 (y 2

m Además, si las filas de  se almacenan en  


  7 valor
de la columna 
 ,
    i 
las lecturas de bloque se reducen a  6 G
 

Ö ventaja de mantener almacenadas las relaciones en una À 


  
  

m   el    


 X:
- Peor caso: cada fila de R necesita una búsqueda completa en X para encontrar las
filas correspondientes en · Ž lectura de 1 bloque en cada nivel de X
- ·i X tiene  niveles, son m *  lecturas extras de bloques
- n la práctica  ? 3 y el nivel superior de X reside en Memoria Principal (menos
lecturas

μ
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
I G >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

m   sobre la técnica de E


:
- as relaciones  y  no tienen por qué estar almacenadas en ningún orden,
- tampoco es necesario ordenarlas dinámicamente

Œ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 
       
 

$ &   "








 

 nfoque diferente que puede combinarse con los que hemos visto

 -  
 
: 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

 Con la aparición de las bases de datos de conocimiento y los


sistemas expertos, es posible que esta técnica se incorpore a los
·Bå futuros
ŒA
p 
       
 

$ &   "








 
(2
jemplo:
¼    
   



)5   M

*#$#+#,#[
 "%

Ž p  &*#$ '


"#+#,#[

 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 
       
 

$ &   "








 
(y 3

Ë!! = 


JOIN !! y la consulta anterior equivale a:
$--[
#+#,#[%

Ž 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 
       
 

You might also like