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

Procesamiento de Consultas

Consulta de usuario
en Alto Nivel

PROCESAMIE
TO DE CO
SULTAS
Y OPTIMIZACIO

Procesador
de Consultas

Comandos de Manipulacin de
Datos en Bajo Nivel

Acceso de la Consulta
Interfaces de
la Aplicacin

DBMS

Programas
de Aplicacin

Consulta

DML
preprocesador

Procesador
de Consultas

Cdigo
Objeto de APs

Manejador
de la BD

Esquema de
la Base de Datos

DDL
preprocesador

Manejador
de Archivos
Archivos
Catlogo del
de Datos
Sistema
Almacenamiento
en Disco

El Catlogo del Sistema


Almacena la Meta Informacin que describe cada
base de datos, incluyendo una descripcin de
El esquema conceptual de la base de datos (modelo de
datos logico)
Relaciones, Atributos, Llaves, Indices, Vistas

El esquema interno
El esquema externo

Almacena informacin necesitada por mdulos


especficos del DBMS
Mdulo de optimizacin de consultas
Modelo de seguridad y autorizacin

El Catlogo del DBMS Relacional


Toda la Meta Informacin es almacenada como relaciones
 Ejemplo


Llaves

Indices
Rel_name Index_name Member_attr Index_type Attr_no Asc_Desc
Consultas de las Vistas
Query

Atributos de las Vistas


View_name

Attr_name Attr_num

Diccionario de Datos

DBAs

Programadores
de Aplicaciones

Diccionario de Datos

Usuarios
Finales

Definicin correcta de relaciones y atributos


Generar rbol de consulta despus del parser

Parser del DML, guiado por la descripcin de la sintaxis del DML


y la informacin del esquema en el catlogo
Verificador, contra la descripcin
Compilador, mapea consultas de alto nivel o comandos del DML
dentro de comandos de acceso a archivos en bajo nivel
Optimizador, accesa la informacin de la estructura de la BD
(esquemas), accesa trayectorias para decidir el mejor camino para
ejecutar un comando de consulta/DML

Componentes del Procesamiento de Consultas

Paquete de software separado


Debilmente acoplado con el DBMS
En su mayor parte utilizado por los diseadores de la BD, usuarios, y
los administradores de la BD
Mantiene informacin sobre el hardware y software del sistema
Documenta el proceso de diseo de la BD (diseo ER), usuarios,
administradores, e informacin relevante a la administracin del
sistema
Prog. Ap./
Generador de
Reportes

Compiladores de DDL:

Compilador de DML (Consulta):

Rel_name Key_number Member_attr

View_name

Usos del Catlogo del Sistema

DBMS

 Lenguaje de Consulta Utilizado


 SQL intergalactic dataspeak
 Metodologa de Ejecucin de Consultas
 Los pasos necesarios para ejecutar una
consulta de alto nivel (declarativa)
 Optimizacin

Archivos
de Datos

de Consultas

 Cmo determinamos el mejor plan de ejecucin?


 No el ms optimo, slo el mejor

Descomposicin de Consulta

Metodologa del Procesamiento de Consultas

Entrada: Consulta en clculo sobre las relaciones base


Consulta en Clculo
Descomposicin
de Consulta

ESQUEMA
EXTER
O

 Manipular cuantificadores y cualificacin de la consulta


 Anlisis

Consulta en Algebra

ESQUEMA
LOGICO

Optimizacin
de Consulta

ESQUEMA
I
TER
O

 Detectar y rechazar consultas incorrectas


Posible para slo un subconjunto de l clculo relacional


Verificacin de

validacin
Verificacin de atributos y relaciones


Anlisis



Poner dentro de la forma normal


Forma

normal conjuntiva
(p1 1p12 ... p1n) ... (pm 1pm2 ...pmn)

Forma

normal disyuntiva
(p1 1 p12 ... p1n) ... (pm 1
pm2 ... pmn)

Mapeo de
Mapeo de

OR dentro de la unin
A
D dentro de un join o seleccin

Restructuracin
 Consulta en clculo => Consulta en lgreba
 Ms de una traduccin es posible
 Usa reglas de transformacin

ormalizacin
Lxico y Sintctico

Simplificacin
 Eliminar predicados redundantes

Plan de Ejecucin

 Anlisis

Normalizacin

Rechazar las consultas incorrectas


Incorrectos
 Si cualquiera de sus atributos o nombre de relacin no estn
definidos en el esquema global
 Si las operaciones son aplicadas a atributos de tipos incorrectos
Semnticamente incorrecto
 Componentes que no contribuyen de ninguna manera a la
generacin del resultado
 Solamente un subconjunto de las consultas en clculo
relacional pueden ser probadas por correctez
 Aquellas que no contienen disyunciones y negaciones
 Contradictorios
DUR>27 AND DUR<25

Anlisis - Ejemplo
SELECT
FROM
WHERE
A
D
A
D
A
D
A
D

Anlisis

ENAME, RESP
E, G, J
E.ENO = G.ENO
G.JNO = J.JNO
JNAME = CAD/CAM
DUR 36
TITLE = Programmer

Si el grfo de la consulta no est enlazado, la consulta


est equivocada.

Grafo de consulta

SELECT
FROM
WHERE
A
D
A
D
A
D

Grafo del Join

ENAME, RESP
E, G, J
E.ENO = G.ENO
JNAME = CAD/CAM
DUR 36
TITLE = Programmer

DUR36
E.ENO=G.ENO
TITLE=
Programmer

DUR36

G.JNO=J.JNO

RESP

E.ENO=G.ENO

G.JNO=J.JNO

JNAME=CAD/CAM

ENAME

E.ENO=G.ENO
TITLE=Programmer

Por qu simplificar?
Consulta ms

simple, menos trabajo y mejor eficiencia

Cmo? Use las reglas de transformacin


eliminacin de redundancias
reglas de idempotencia
p1 (p1) false

JNAME=CAD/CAM

RESP

ENAME

RESULTADO

Simplificacin

RESULTADO

Simplificacin - Ejemplo
SELECT
FROM
WHERE
OR
A
D
OR
A
D

TITLE
E
E.ENAME = J. Doe
(
OT (E.TITLE = Programmer)
(E.TITLE = Programmer
E.TITLE = Elect. Eng.)

OT (E.TITLE = Elect. Eng. ))

SELECT
FROM
WHERE

TITLE
E
E.ENAME = J. Doe

(p1 p2) (p1) (p2)


p1 false p1
...
aplicacin de transitividad
uso de reglas de integridad

Restructurando
Convertir clculo Relacional a
algebra relacional
 Hacer uso de rboles de consulta
 Ejemplo
Encontrar los nombres de empleados
diferentes a J. Doe que trabajaron en
el proyecto CAD/CAM por 1 o 2 aos.
SELECT
FROM
WHERE
A
D
A
D
A
D
A
D

Complejidad de las Operaciones Relacionales

ENAME

(DUR=12 OR DUR=24) AND


JNAME=CAD/CAM AND
ENAME J. DOE

ENAME
E, G, J
JNO
E.ENO = G.ENO
G.JNO = J.JNO
E.ENAME J. Doe
J.JNAME = CAD/CAM
(G.DUR = 12 OR G.DUR = 24) J
G

ENO

Project

Select

Join

Operacin
Complejidad
Select
 Asumimos
Project
 relaciones de cardinalidcad n
(Sin eliminar duplicados)
O(n)
 bsqueda secuencial
Project
(Con eliminacin de duplicados)
O(nlogn)
Group
Join
Semi-join
Division
O(nlogn)
Operadores de conjuntos
2
Producto Cartesiano
O(n )

Algunos Tipos de Consultas

Implementacin del SELECT


Principios

Consultas Select-Project-Join (SPJ)


Slo involucran estos operadores
La mayora de las consultas

Consultas de Igualdad
Tambin llamadas consultas de punto
Encontrar empleados donde SAL=100000

Consultas por Rango


Encontrar empleados donde 30000SAL100000

Equality eliminates many


Index eliminate early
Indices compuestos pueden ayudar en casos especficos

Bsqueda secuencial
Fuerza bruta
Buscar todos los registros para encontrar el que aparea

Bsqueda binaria
Comparacin de igualdad sobre una atributo llave usado por
ordenamiento

Indice primario o llave aleatoria para registros simples


Comparacin de igualdad sobre un atributo llave con ndice
primario o llave hash

Implementacin del SELECT




Condicin Conjuntiva
 Seleccin conjuntiva

Indice primario para multiples registros


Usa llave primaria para encontrar el atributo de igualdad
Ir hacia adelante (> o ) o hacia atrs (< o ) acorde al operador de
comparacin

Implementacin del SELECT


Si una de las conjunciones tiene un buen camino de acceso, usar
ese y verificar las otras conjunciones para cada uno de estos
registros


Agrupamiento de ndices para mltiples registros

Si un ndice ha sido establecido jointly para un nmero de atributos


en la conjuncin
Condicin de igualdad

Comparacin de igualdad sobre un atributo no llave con un


clustering index


Indice secundario (B+-tree)


Consultas por igualdad o rango

Seleccin Selectiva
Los factores de selectividad indican el
porcentaje de la relacin(es) original(es)
que participar en el resultado
card(F(R) = SF(F) * card(R)
max(A) - valor
max(A) - min(A)
SF(A < valor) = valor - max(A)
max(A) - min(A)
SF(A > valor) =

SF( p(Ai) p(Aj) ) = SF( p(Ai)) * SF( p(Aj) )


SF( p(Ai) p(Aj) ) = SF( p(Ai)) + SF( p(Aj) ) - (SF( p(Ai)) * SF( p(Aj)) )
SF( A valor ) = SF( A = valor ) * card({valores})

Indice compuesto

Interseccin de apuntadores
Si ndices secundarios existen sobre todos o la mayora de los
atributos en la conjuncin y los ndices incluyen apuntadores a
registros
Estraer cada atributo usando estos ndices y tomar su interseccin

Implementacin del PROJECT


Si <lista de atributos> incluye llave
Simple, ya que la cardinalidad de los resultados es la
misma que la cardinalidad de la relacin original

Si <lista de atributos> no incluye llave


Duplicados permitidos
Eliminacin de duplicados
Ordenar despus de la proyeccin y eliminar consecutivamente
los duplicados que aparezcan
Usar hashing: realizar hash a cada registro dentro de un bucket
y verificar contra los registros que ya estn en el bucket

Estimacin de tamao: card(A(R))=card(R)

Implementacin del JOI

Implementacin del JOI

Ciclos Anidados
Simple iteracin e iteracin orientada a bloques

Sort-Merge Join

Por cada block en R hacer


Extraer cada registro de S y probar condicin del Join

Un Indice en S pudiera acelerar el ciclo interno


La relacin ms pequea debiera ser la exterior
Clculo de I/O
Sea b0 (resp.bi) el nmero de blocks tomados la relacin
externa (resp. interior)
Sea nB el tamao del buffer (en blocks) dedicado para
argumentos
Sea bR el tamao de la relacin resultante (en blocks)
No. Total de blocks accesados = b0+[b0/(nB-1)]*bi+bR

Implementacin del JOI

Hash Join
Hash R y S usando la misma funcin hash en el mismo archivo.
Unir los registros de R y S que caigan dentro del mismo bucket


Si el archivo hash puede estar residente en memoria,


entonces resulta eficiente y fcil de implementar
Si el espacio en el buffer es insuficiente entonces parte
de lo que tiene el archivo tiene que estar en disco
Varias optimizaciones para este caso
(en
el libro de referencia se describe el hybrid hash join)

Fsicamente ordenar las relaciones R y S


Recorrer R y S en el orden clasificado y unir


Si los archivos no son fsicamente ordenados, sino que


son ordenados sobre los atributos del Join, una
variacin pudiera ser utilizada
Totalmente ineficiente ya que los registros son dispersados
sobre el disco
No. Total de blocks accesados = b + bi+ b0log2b0 + bilog2bi + bR

Optimizacin de Consultas
No optimiza realmente, pero planea evitar
malas estrategias de ejecucin
Tipos
Basado en heursticas
Aplica reglas de transformacin acorde a una
estrategia general

Basado en Bost
Minimiza el costo de funcin
costo de I/O + costo de CPU
sujeto a un conjunto de restricciones

Optimizacin de Consultas


Costo de Alternativas

Por qu es importante?

SELECT
FROM
WHERE
A
D

card(E) = 4,000; card(G) = 10,000


10% de tuplas en G satisfacen DUR>37 (la seleccin
genera 1000 tuplas)

ENAME
E,G
E.ENO = G.ENO
G.DUR > 37

El tiempo de ejecucin es proporcional a la suma de las


cardinalidades de las relaciones temporales


Estrategia 1
ENAME(DUR>37 E.ENO=G.ENO(E X G))
Estrategia 2
ENAME( E

ENO (

Asumir:

DUR>37(G)))

Elementos para optimizacin de consultas


Tipos de Optimizadores

La bsqueda es hecha mediante revisin secuencial

Estartegia 1
Producto cartesiano = 40,000,000
Buscar en todas
= 40,000,000
80,000,000

Estartegia 2
Seleccin sobre G =
10,000
Join(4000*1000) = 4,000,000
4,010,000

Elementos para optimizacin de consultasGranularidad de la Optimizacin

 Bsqueda exhaustiva

- basado en costo
- optima
- complejidad combinatorial en el nmero de relaciones
 Eurstica
- No optima
- Agrupa subexpresiones comunes
- Desarrollar seleccin, primeo proyeccin
- Reemplazar un join por una serir de semijoins
- reordenar operaciones para reducir el tamao de
las relaciones intermedias
- Optimiza operaciones individuales

Una Consulta a la Vez


 No puede usar resultados intermedios comunes

Multiples Consultas a la Vez


 Eficiente si hay muchas consultas similares
El espacio de decisin es mucho mayor

Elementos para optimizacin de consultas


Tiempo de optimizacin
 Esttico
 Compilacin =optimizar antes de la ejecucin
 Difcil de estimar el tamao de los resultados intermedios
=> propagacin de error
 Puede amortizar muchas ejecuciones
 Dinmico
 Optimizacin en tiempo de ejecucin
 Informacin exacta en los tamaos de relacin intermedia
 Tiene que reoptimizar para ejecuciones mltiples
 Hbrido
 Compilar usando un algoritmo esttico
 Si el error en el tamao estimado>a un umbral, reoptimizar al tiempo
de ejecucin

Optimizacin de Consultas por Heurstica


Optimizacin Heursticas para el lgebra
relacional
Efectuar seleccin y proyeccin antes del Join
Combinar varias secciones sobre una relacin simple
dentro de una seleccin
Encontrar subexpresiones comunes
Reglas de reescritura/transformacin algebraicas

Reglas de Transformacin General para el algebra


relacional (tambin llamadas reglas de reescritura
algebraica para preservacin de equivalencia)

Reglas de Transformacin Algebraica


Cascada de Selecciones
c1 and c2 and .... and cn(R) c1 (c2(...(cn(R))...))
Cascada de Proyecciones
A1 and A2 and .... and An(R) A1 (A2(...(An(R))...))
A1(R) if A2,...,AnA1

Conmutatividad de Selecciones
c1 (c2(R)) c2 (c1(R))
c1 or c2(R) c1(R) c2(R)
Conmutatividad de Seleccin con Proyeccin
A1,A2, ...., An(c(R)) c(A1,A2,....,An(R))

Reglas de Transformacin


Conmutatividad de operaciones binarias


RXSSXR
R SS R
 RSSR
 RSSR


Asociatividad de operaciones binarias


 (R X S) X T R X (S X T)
 (R
S) T R (S T)

Idempotencia en operaciones unarias


 A (A (R)) A(R)


p1(A1)(p2(A2)(R)) = p1(A1) ^ p2(A2)(R)

Donde R[A] y A A, A A y A A
 conmutar seleccin con proyeccin

Reglas de Transformacin

Contorno de la Optimizacin Basada en Heursticas

Conmutar seleccin con operaciones binarias


p(A)(R X S) (p(A)(R)) X S

Usa regla de Cascada de Selecciones, separa


algunas selecciones con condiciones conjuntivas
dentro de una cascada de selecciones

p(Ai)(R (Aj,Bk))S) (p(Ai)(R)) (Aj,Bk))S


 p(Ai)(R T) p(Ai)(R) (Ai)(T)


Permite ms libertad en mover selecciones en diferentes


ramas del rbol

donde Ai pertenece a R y T


Conmutar proyeccin con operaciones binarias


 C(R X S) A(R) X B(S)



C(R (Aj,Bk)S) A(R) (Aj,Bk) B(S)


C(R S) C(R) C(S)

Usa Conmutatividad de Selecciones con otras


reglas de operacin, mueve cada seleccin al rbol
de consulta como sea posible

Donde R[A] y S[B]; C = A B donde A A, B B

Contorno de la Optimizacin Basada en Heursticas




Usa asociatividad de operaciones binarias,


rearregla los nodos hoja para que la mayora de
selecciones restrictivas sean ejecutadas primero


the fewer tuples the resulting relation contains, the


more restrictive the selection is
reduce el tamao de resultados intermedios mejorando
la eficiencia

Si es posible, combina un producto cartesiano con


una seleccin en un Join

Contorno de la Optimizacin Basada en Heursticas

Usa cascada de proyecciones y conmutatividad de


proyecciones con otras operaciones, divide y
mueve listas de proyecciones al rbol como sea
posible
Identifica subarboles que representan grupos de
operaciones que pueden ser ejecutadas mediante
un simple algoritmo

Optimizacin Basada en Heursticas: Ejemplo

Optimizacin Basada en Heursticas: Ejemplo


ENAME

ENAME
Arbol de consulta cannica
al final de la fase de
descomposicin

(DUR=12 OR DUR=24) AND

DUR=12 OR DUR=24
JNAME=CAD/CAM

JNAME=CAD/CAM AND
ENAME J. DOE

ENAME J. DOE
JNO

JNO

ENO

ENO

Optimizacin Basada en Heursticas: Ejemplo

Optimizacin Basada en Heursticas: Ejemplo

ENAME

ENAME

DUR=12 OR DUR=24

DUR=12 OR DUR=24

Mete seleccin utilizando


conmutatividad de seleccin
sobre el Join

JNAME=CAD/CAM

Mete seleccin utilizando


conmutatividad de seleccin
sobre el Join

JNO
ENO

JNO

JNAME=CAD/CAM

ENO

Usa la regla de cascada de


selecciones para descomponer
selecciones

ENAME J. DOE
E

ENAME J. DOE
E

Optimizacin Basada en Heursticas: Ejemplo

Optimizacin Basada en Heursticas: Ejemplo


E
AME

ENAME
Mete seleccin

J
O

J
O, E
AME

JNO

Realizar las proyecciones


ms cercanas

ENO
E
O

JNAME=CAD/CAM DUR=12 OR DUR=24 ENAME J. DOE


J
O

J
O, E
O

J
O, E
AME

J
AME =

DUR = 12 DUR = 24

E
AME

J. Doe

CAD/CAM
J

Optimizacin Basada en Heursticas: Ejemplo


E
AME

Identifica subarboles que pueden


ser implementados en un algoritmo

J
O

J
O, E
AME

J
AME =

J
O, E
O

DUR = 12 DUR = 24
E

Optimizacin de Consultas
Basada en Heursticas: Resumen
Primero aplica operaciones que reducen el tamao
de los resultados intermedios

Selecciones tempranas reducen el nmero de tuplas


Proyecciones tempranas reducen el nmero de atributos
J
O, E
AME

E
AME

CAD/CAM
J

Mueve selecciones y proyecciones en el rbol como sea


posible

E
O

J
O

J. Doe

Las operaciones de seleccin y Join son las ms


restrictivas, as, deben ser ejecutadas antes de otras
operaciones similares
Esto es hecho mediante reordenar los nodos hojas del rbol
entre ellos mismos y ajustar el resto del rbol apropiadamente

Optimizacin Basada en Costo


Reduce el costo definido en ejecuciones de consultas
Qu est involucrado en el costo de ejecucin de una consulta?
Costo de acceso al almacenamiento secundario:
Bsqueda por block de datos (ndice)
Lectura/Escritura de ndice y block de datos

Costo de Almacenar
Indice y block de datos
Archivos intermedios

Costo de computacin
Planeacin de la consulta
Bsqueda, ordenamiento y unin de registros
Operaciones actuales de transaccin/consulta

Costo de Comunicacin
Transferencia de resultados al usuario

Componentes de Optimizacin
Basada en Costo
Espacio de bsqueda
Las estrategias de ejecucin alternativas (conjunto de
expresiones en lgebra equivalentes)

Algoritmo de bsqueda
Cmo encontrar las estrategias de ejecucin alternativa
en el espacio de bsqueda

Costo de funcin
Cmo calcular el relativo beneficio de varias
estrategias de ejecucin que son encontradas

Estadsticas
Lo siguiente es mantenido en el catlogo del sistema para
propsitos de optimizacin

Parametros de archivo: tamao de block


Nmero de tuplas en cada relacin
Tamao de las tuplas
Campos llave, ndices
Nmero de niveles en un ndice
Llave superior, llave inferior
Nmero de valores distintos (puede ser)
Otros: frecuencia de operaciones, join, llaves, etc.

Todos los DBMS mantiene los primeros cuatro, muchos


mantienen todos

Espacio de Bsqueda
Alternativas de estrategias de ejecucin
identificadas mediante
Las reglas de transformacin
Los diferentes operadores en los algoritmos de
ejecucin
Diferentes agrupamientos de operaciones

Ordenamiento del Join en n-maneras de Joins


En algunos casos diferentes tcnicas de ejecucin
de consultas pudieran tambin entrar en juego
Ejecucin en paralelo
Ejecucin en pipeline
........

Estrategia de Bsqueda

Ordenamiento del Join


Dado R S
Alternativas

((R
(R
R
((R
((R
.....
(R

W determinar el mejor orden

S) T) W
(S T)) W
(S (T W))
T) S) W
W) S) T
S)

(T W)

Costo de Funciones
Tal vez el aspecto ms crtico en la optimizacin
de consultas
Usualmente basado en estimaciones de los
resultados intermedios
Dficil en estimar
Propagacin de error

Podemos observar varios costo de funcin en la


referencia

Busca toda las alternativas, no es computacionalmente


factible para consultas grandes
El tamao de la consulta es determinado por el nmero de
relaciones que referenca

Heursticas son determinadas

Programacin dinmica con reduccin es lo ms comn


Arbol de consulta lineal izquierda o derecha
Algoritmos aleatorizados para consultas grandes
mejora iterativa
annealing simulado

Optimizaciones de Consultas Centralizadas




INGRES
Dinmica
 Interpretativa

System R
Esttica
 Bsqueda Exhaustiva

Algoritmo de I
GRES
 Descomponer cada consulta multi-variable dentro de
una secuencia de consultas mono-variable con una
variable comn
 El procesador de consultas procesa una a una las variables
 Elige un plan inicial de ejecucin (heurstica)
 Ordena el resto mediante considerar tamaos de
relaciones intermedias

No mantiene informacin estadstica

Separacin
q: SELECT
FROM
WHERE

Algoritmo-Descomposicin I
GRES


Reemplaza una variable n de la consulta q por una serie


de consultas
q1 q2 ... qn
donde qi usa el resultado de qi - 1

Separacin
consulta q despompuesta dentro de q q donde q y
q tienen una variable comn la cual es el resultado de q

La

Sustitucin de tupla
Reemplace el valor de cada tupla con los valores actuales
y simplifique la consulta
q(V1, V2, ... Vn) (q (t1, V2, V3, ... Vn), t1 R)

Ejemplo de Separacin
V2.A2, V3.A3, ..., Vn.An
R1 V1, ..., Rn.Vn
P1 (V1 . A1) A
D P2 (V1 . A1, V2 . A2, ..., Vn.An)

q: SELECT
FROM
WHERE

V1.A1, I
TO R1
R1 V1
P1 (V1 . A1)

q: SELECT
FROM
WHERE

V2.A2, ..., Vn.An


R1 V1, R2 V2, ..., Rn.Vn
P2 (V1 . A1, V2 . A2, ..., Vn.An)

q: SELECT
FROM
WHERE
A
D
A
D

E.E)AME
E, G, J
E.E)O=G.E)O
G.J)O=J.J)O
J.J)AME=CAD/CAM

q11:

SELECT
FROM
WHERE

q: SELECT
FROM
WHERE
A
D

J.J)O I
TO JVAR
J
J.J)AME=CAD/CAM
E.E)AME
E, G, JVAR
E.E)O=G.E)O
G,J)O=JVAR.J)O

Ejemplo de Separacin (cont..)


q: SELECT
FROM
WHERE
A
D

E.E)AME
E, G, JVAR
E.E)O=G.E)O
G,J)O=JVAR.J)O

Sustitucin de Tuplas
q11 es una consulta mono-variable
q12 y q13 estn sujetas a sustitucin de tuplas
Asumimos que GVAR tiene unicamente 2 tuplas: <E1> y <E2>
entonces q13 queda
q131: SELECT
FROM
WHERE

q12: SELECT
FROM
WHERE

G.E)O I
TO GVAR
G, JVAR
G.J)O=JVAR.J)O

q13: SELECT
FROM
WHERE

E.E)AME
G, GVAR
E.E)O=GVAR.E)O

Algoritmo de System R
 Consultas simples (ejem. mono-relacin) son

q132: SELECT
FROM
WHERE

E.E)AME
E
E.E)O=E2

Algoritmo de System R
Para los Joins, tiene 2 algoritmos alternativos:
 Ciclos Anidados
Para cada tupla de relacin externa (cardinalidad n1)
Para cada tupla de relacin interna (cardinalidad n2)
join de dos tuplas si el predicado del join es verdadero
Fin
Fin
Complejidad: n1* n2

ejecutadas de acuerdo al mejor camino de acceso


 Ejecucin de Joins

2.1 Determina el posible orden de los joins


2.2 Determina el costo de cada orden
2.3 Elige el orden de join con costo mnimo

E.E)AME
E
E.E)O=E1

Mezclar Join
Ordena relaciones
Mezcla relaciones
Complejidad: n1+ n2 Si las relaciones son previamente
ordenadas y equijoin

Algoritmo de System R - Ejemplo

Algoritmo de System R - Ejemplo (cont..)

Nombres de empleados que trabajan en el


proyecto CAD/CAM

 Elige el mejor camino de acceso para cada relacin

Asumir:
E tiene un ndice sobre ENO
G tiene un ndice sobre JNO
J tiene un ndice sobre JNO y un ndice sobre JNAME

E: bsqueda secuencial (no hay seleccin sobre E)


G: bsqueda secuencial (no seleccin sobre G)
 J: ndice sobre JNAME (hay una seleccin sobre
J basado en JNAME)
 Determinar el mejor orden de Join
E G J
G J E
J G E
G E J
EX J G
J XE G
Seleccionar el mejor orden basado en los costos del Join
evaluado de acuerdo a los dos mtodos

G
ENO

JNO
J

Algoritmo de System R
Algoritmo de System R

Alternativas
E
E G
pruned

G
ExJ
pruned

G
(G E)

GxJ
pruned
J

((J G) E) tiene un ndice til sobre los atributos del


select y accesa directamente los atributos del Join de G y E

J
J

(J G)

JxE
pruned
E

 Por lo tanto, elegirlo con los siguientes mtodos de


acceso:

 Seleccionar J usando el ndice sobre JNAME


 entonces unir con G utilizando el indice sobre JNO

El mejor orden del join total es uno de


((G E) J)
((J G) E)

 despus unir con E utilizando el ndice sobre ENO

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