Está en la página 1de 34

Optimización de Consultas

distribuidas
Esquema
A)Descomposición del query global
Q en AR sobre tablas globales
Esquema
B)Localización de datos de fragmentos
Q en AR sobre fragmentos
Estadísticas
C) Optimización global sobre fragmentos
Q fragmentos optimizado
Esquema
D) Optimización local Local
Q locales optimizados
Optimización de Consultas
distribuidas
Esquema
A)Descomposición del query global
Q en AR sobre relaciones globales

1. Eliminar redundancias en calificadores: Ej: pVp=p


2. Llevar la consulta al álgebra relacional
3. Llevar la consulta a la forma canónica (primero
operaciones unarias)
Optimización de Consultas
distribuidas
Esquema
B)Localización de Datos de fragmentos
Q en AR sobre fragmentos

SE ASUME QUE NO EXISTEN RÉPLICAS


• Llevar QAR sobre relaciones globales a QAR sobre
fragmentos (QAR distribuido), aplicando reglas de
reconstrucción.
Fragmentación horizontal: R=U Ri
Fragmentación Vertical: R=⋈ Ri
Fragmentación mixta: (RiURj) ⋈ Rk
2. Reducir el QAR distribuido según el tipo de
fragmentación (eliminando relaciones vacía)
Optimización Consultas distribuidas (ejercicio)
Sean: G(eno,trabajo,salario) G=TrabajaEn
E(eno,nom,tit) E=Empleado
E está fragmentado en:

E1=eno<=3(E) E2=3<eno<=6(E) E3=eno>6(E)

G está fragmentado en:

G1=eno<=3(G) G2=eno>3(G)

Aplicar las fases A y B de optimización de consultas distribuidas a:


1) Select * from E where eno=5
2) Select * from E,G where E.eno=G.eno
3) Select E.eno,nom from E,G where E.eno=G.eno
4) Select E.eno,nom from E,G where E.eno=G.eno and E.eno<=3
5) Select E.eno,nom from E,G where E.eno=G.eno and E.eno<=2
Optimización de Consultas distribuidas
(Solución)
G(eno,trabajo,salario) => G1=eno<=3(G) G2=eno>3(G)

E(eno,nom,tit) => E1=eno<=3(E) E2=3<eno<=6(E) E3=eno>6(E)

Aplicar las fases A y B de optimización a:


1) Select * from E where eno=5

A) Select * from E where eno=5   eno=5 (E)


B)  eno=5 (E)   eno=5 (E1 U E2 U E3)   eno=5 (E2)
Optimización de Consultas distribuidas (Solución)
G(eno,trabajo,salario) => G1=eno<=3(G) G2=eno>3(G)

E(eno,nom,tit) => E1=eno<=3(E) E2=3<eno<=6(E) E3=eno>6(E)

Aplicar las fases A y B de optimización a:


2) Select * from E,G where E.eno=G.eno

A) Select * from E,G where E.eno=G.eno  (E ⋈ G)


B) (E ⋈ G)  ((E1 U E2 U E3) ⋈ (G1 U G2))
 ((E1 U E2 U E3) ⋈ G1) U ((E1 U E2 U E3) ⋈ G2)
(E1 ⋈ G1) U (E2 ⋈G1) U (E3 ⋈G1) U
(E1 ⋈ G2) U (E2 ⋈G2) U (E3 ⋈G2)

 ((E1 ⋈ G1) U (E2 ⋈ G2) U (E3 ⋈ G2))


Optimización de Consultas distribuidas
(Solución ejercicio 3)
G(eno,trabajo,salario) => G1=eno<=3(G) G2=eno>3(G)

E(eno,nom,tit) => E1=eno<=3(E) E2=3<eno<=6(E) E3=eno>6(E)

Aplicar las fases A y B de optimización a:


3) Select E.eno,nom from E,G where E.eno=G.eno
A) Select E.eno,nom from E,G where E.eno=G.eno
 ( eno,nom ( E) ⋈  eno( G))
⋈ ( eno( G))
B) ( eno,nom ( E))
 ( eno,nom ( E1UE2UE3)) ⋈ ( eno( G1UG2))

 (( eno,nom ( E1) ⋈  eno( G1)) U ( eno,nom ( E2) ⋈  eno( G2)) U


( eno,nom ( E3) ⋈  eno( G2)))
Optimización de Consultas distribuidas
(Solución)
G(eno,trabajo,salario) => G1=eno<=3(G) G2=eno>3(G)

E(eno,nom,tit) => E1=eno<=3(E) E2=3<eno<=6(E) E3=eno>6(E)

Aplicar las fases A y B de optimización a:


4) Select E.eno,nom from E,G where E.eno=G.eno and E.eno<=3
A) Select E.eno,nom from E,G where E.eno=G.eno and E.eno<=3

 ( eno,nom (eno<=3(E)) ) ⋈ ( eno(eno<=3(G)))


B) ( eno,nom (eno<=3(E1 U E2 U E3)) ) ⋈ ( eno(eno<=3(G1 U G2)))
 ( eno,nom (eno<=3(E1)) ) ⋈ ( eno(eno<=3(G1)))
 ( eno,nom (E1) ) ⋈ ( eno(G1))
Optimización de Consultas distribuidas
(Solución)
G(eno,trabajo,salario) => G1=eno<=3(G) G2=eno>3(G)

E(eno,nom,tit) => E1=eno<=3(E) E2=3<eno<=6(E) E3=eno>6(E)

Aplicar las fases A y B de optimización a:


5) Select E.eno,nom from E,G where E.eno=G.eno and E.eno<=2
A) Select E.eno,nom from E,G where E.eno=G.eno and E.eno<=2

 ( eno,nom (eno<=2(E)) ) ⋈ ( eno(eno<=2(G)))


B) ( eno,nom (eno<=2(E1 U E2 U E3)) ) ⋈ ( eno(eno<=2(G1 U G2)))
 ( eno,nom (eno<=2(E1)) ) ⋈ ( eno(eno<=2(G1)))
Optimización de Consultas distribuidas
(Ejercicio)
Sea:

E(eno,nom,tit) => E1= eno,nom(E) E2=  eno,tit(E)


Aplicar las fases A y B de optimización a:
Select nom from E
Optimización de Consultas distribuidas
(Ejercicio)
Sea:

E(eno,nom,tit) => E1= eno,nom(E) E2=  eno,tit(E)


Aplicar las fases A y B de optimización a:
Select nom from E

SOLUCIÓN:

A) Select nom from E   nom (E)

B)  nom (E)   nom (E1⋈ E2)   nom (E1)


Optimización de Consultas distribuidas
(Ejercicio)
Sea:

E(eno,nom,tit) => E1=tit=‘p’(E) E2=tit<>’p’(E)

G(eno,trabajo,salario) =>

1) Hacer la fragmentación de G a partir de E


2) Aplicar las fases A y B de optimización a:
a) Select * from E,G where G.eno=E.eno and tit=‘x’
b) Select * from E,G where G.eno=E.eno and tit=‘p’
c) Select E.* from E,G where G.eno=E.eno and tit=‘p’
d) Select G.* from E,G where G.eno=E.eno and tit=‘p’
e) Select G.* from E,G where G.eno=E.eno and tit=‘x’
Optimización de Consultas distribuidas
(Respuestas a Ejercicios)
Sea:

E(eno,nom,tit) => E1=tit=‘p’(E) E2=tit<>’p’(E)

G(eno,trabajo,salario) =>

1) Hacer la fragmentación de G a partir de E


2) Aplicar las fases A y B de optimización a:
a) Select * from E,G where G.eno=E.eno and tit=‘x’ => ((tit=‘x’ (E2 )) ⋈ G2)

b) Select * from E,G where G.eno=E.eno and tit=‘p’ => (E1 ⋈ G1)

c) Select E.* from E,G where G.eno=E.eno and tit=‘p’ => (E1 ⋈ ( enoG1))
d) Select G.* from E,G where G.eno=E.eno and tit=‘p’ => G1
e) Select G.* from E,G where G.eno=E.eno and tit=‘x’ => G2 ⋈ ( eno (tit=‘x’ (E2 )))
Optimización de Consultas distribuidas
(Solución: 2-a)
Sea:

E(eno,nom,tit) => E1=tit=‘p’(E) E2=tit<>’p’(E)

G(eno,trabajo,salario) => G1=G ⋉ E1 G2= G ⋉ E2


Aplicar las fases A y B de optimización a:
a) Select * from E,G where G.eno=E.eno and tit=‘x’

A) Select ...  tit=‘x’( E ⋈ G)  (tit=‘x’ ( E )) ⋈ G


B) (tit=‘x’ ( E )) ⋈ G  (tit=‘x’ ( E1 U E2 )) ⋈ (G1 U G2) 
(tit=‘x’ (E2 )) ⋈ (G1 U G2) 
((tit=‘x’ (E2 )) ⋈ G1) U ((tit=‘x’ (E2 )) ⋈ G2) 
((tit=‘x’ (E2 )) ⋈ G2)
Optimización de Consultas distribuidas
(Ejercicios)
Sea:

E(eno,nom,tit) => E1=eno<=4( eno,nom(E))

E2=eno>4( eno,nom(E))

E3= eno,tit(E)

Aplicar las fases A y B de optimización a:


1) Select nom from E where eno=5
2) Select nom,eno from E where eno=5
3) Select eno,nom from E where eno>4
4) Select nom from E where eno>4
Optimización de Consultas distribuidas
(Ejercicio)
Sean: DPTO(codDpto,descrip,loc) loc=A/B/C
EMPL(ci,nom,codDpto,direc)
Y la fragmentación:

D1=loc=‘A’(DPTO) D2=loc=‘B’(DPTO) D3=loc=‘C’(DPTO)

E1=EMPL⋉ D1 E2= EMPL⋉ D2 E3= EMPL⋉ D3


Aplicar las fases A y B de optimización de consultas distribuidas a :
1) Select E.* from EMPL E, DPTO D WHERE E.codDpto=D.codDpto and loc=A
2) Obtener los datos personales de los empleados que no trabajan en loc B
3) Suponiendo que EMPL se ha fragmentado verticalmente en
(ci,nom) y (ci, codDpto,direc).
a) Cuántos fragmentos habrían en total
b) Resolver los ejercicios 1,2 con la nueva fragmentación
Optimización de Consultas distribuidas
(solución)
A) SQL -> AR

R=EMPL ⋈ (  codDpto( loc=‘A’ (DPTO)))


B) LOCALIZACIÓN DE DATOS ( AR sobre fragmentos)

R=(E1 U E2 U E3) ⋈ (  codDpto( loc=‘A’ (D1 U D2 UD3)))


.........
Optimización de Consultas distribuidas
Estadísticas
C) Optimización global sobre fragmentos

Independiente de las características de los


fragmentos (bds. Locales)

Aspecto importante: orden de joins, semijoins,


disminuir tamaño resultados intermedios (que
repercutirá en bajar el cto de comunicación).
Optimización de Consultas distribuidas
Esquema
D) Optimización local Local

-Se ejecuta en todos los sitios que tienen


fragmentos que están en la consulta a optimizar
-Se optimizan los subquerys (los querys que se
ejecutan en un sitio).
- Usa algoritmos centralizados de optimización
Optimización de Consultas distribuidas

Operación crítica en la optimización de


consultas: JOIN / SEMIJOIN

⋉ => Resultados más pequeños pero mayor


coto de procesamiento

⋈ => Resultados más grandes pero menor


costo de procesamiento
Optimización de Consultas distribuidas

Es importante considerar:
-Cto de procesamiento
-Costo de Almacenamiento
-Costo de comunicación:

-Redes WAN: más imp. Cto com=> usar ⋉


-Redes LAN: no es crítica la com => usar ⋈
Optimización de Consultas distribuidas

algoritmo Uso join Toma ventaja de Factores de


semijoin fragmentación optimización
INGRES Horizontal Tam(mjes)/cto
DINÁMICO No usa ⋉ procesamiento
R* No #mjes/tam(mjes)
No usa ⋉ /I/O/CPU
SDD-1 No Tam(mjes)
ÉSTÁTICOS usa ⋉
AHY no #mjes/tam(mjes)
usa ⋉
Optimización de Consultas distribuidas

Horizontal Tam(mjes)/cto
INGRES No usa ⋉ procesamiento

-Búsqueda limitada del especio de soluciones (no


busca la sol global, decide en cada paso).
-Puede corregir una decisión local incorrecta.
-Conoce el resultado exacto de cada relación
intermedia. (porque es dinámico)
Optimización de Consultas distribuidas

No #mjes/tam(mjes)
R* No usa ⋉ /I/O/CPU

-Búsqueda exhaustiva entre alternativas


-Unidad básica de trabajo: la relación
-No soporta fragmentación ni replicación
-Contribuye mucho al procesamiento local
Optimización de Consultas distribuidas

No Tam(mjes)
SDD-1 usa ⋉

- Sólo elige estrategias localmente óptimas


- No explora posibilidades en paralelo
Optimización de Consultas distribuidas

no #mjes/tam(mjes)
AHY usa ⋉

- Elige estrategias globalmente óptimas, pero sólo


sobre un atributo
- Explora posibilidades en paralelo
Control de Concurrencia en BDDs
En la técnica de Locking:
- Antes de R(x), T obtiene BC de una réplica de x.
-Antes de W(x), T obtiene BE de todas las réplicas.
-T libera sus bloqueos después del commit o rollback
Control de Concurrencia en BDDs
En la técnica de Timestamps:
En una BDD el TS dejaría de cumplir el rol de
identificador, porque dos transacciones podrían
tener el mismo tiemstamp.
Solución:
- A toda T se le asigna un TS globalmente único
S= f (id. Sitio , reloj)
-y todo lo demás es igual...
Recuperación en BDDs
-Las BDDs tienen operaciones LÓGICAMENTE
ATÓMICAS que tienen lugar en diferentes sitios: Ej.
Commit.
-En bases de datos centralizadas, una falla es una
cuestión de todo o nada
-En bases de datos distribuidas, pueden existir fallas
parciales => el DBMS se debe encargar de que la
falla sea una cuestión de todo o nada (mediante
protocolos de commit atómico)
Recuperación en BDDs
ACP= Atomic commitment protocol
Algoritmo que asegura ejecución consistente del
commit.
Sea T que involucra diferentes sitios: S1,..Sn.

- se asume que ∀ T, existe un proceso Pi en cada Si


P del sitio home = coordinador (C)
P de los otros sitios = participantes (P)
- P y C toman decisiones según las siguientes reglas
(sgte transparencia)
Recuperación en BDDs
ACP= Atomic commitment protocolo
Algoritmo que asegura ejecución consistente del
commit.
- P y C toman decisiones según las siguientes reglas
a) Todos los Ps deciden lo mismo
b) Un P no puede cambiar de decisión
c) P hace commit  Todos los Ps votan que si
d) Si una ejecución falla y en un punto posterior se
recupera => todos los Ps podrán decidir
Recuperación en BDDs
ACP= Atomic commitment protocolo
Buscando maximizar la tolerancia a fallas existen
varios algoritmos que implementan el protocolo:
a) Protocolo de 2 fases (2PC)
b) Protocolo de 3 fases (3PC)
Recuperación en BDDs
ACP= Atomic commitment protocolo
a) Protocolo de 2 fases (2PC): es el más usado

Sol P P
voto decisión
voto

P P
C C
. .
. .

P P
Recuperación en BDDs
ACP= Atomic commitment protocolo
b) Protocolo de 3 fases (3PC): es teórico

Pre
Sol P P commit P
voto commit
confirmación
voto
C P C P C P
. . .
. . .

P P P

También podría gustarte

  • Formalizacion
    Formalizacion
    Documento10 páginas
    Formalizacion
    NICOLE GERALDINE RODAS CORNEJO
    Aún no hay calificaciones
  • Avance de CLC Numerico
    Avance de CLC Numerico
    Documento51 páginas
    Avance de CLC Numerico
    NICOLE GERALDINE RODAS CORNEJO
    Aún no hay calificaciones
  • Problemas de Concurrencia
    Problemas de Concurrencia
    Documento22 páginas
    Problemas de Concurrencia
    NICOLE GERALDINE RODAS CORNEJO
    Aún no hay calificaciones
  • Integrales Múltiples
    Integrales Múltiples
    Documento7 páginas
    Integrales Múltiples
    NICOLE GERALDINE RODAS CORNEJO
    Aún no hay calificaciones
  • TecnicasControDeConcurrenciaTS Parte3
    TecnicasControDeConcurrenciaTS Parte3
    Documento31 páginas
    TecnicasControDeConcurrenciaTS Parte3
    NICOLE GERALDINE RODAS CORNEJO
    Aún no hay calificaciones
  • Limites
    Limites
    Documento8 páginas
    Limites
    NICOLE GERALDINE RODAS CORNEJO
    Aún no hay calificaciones
  • Derivadas
    Derivadas
    Documento28 páginas
    Derivadas
    NICOLE GERALDINE RODAS CORNEJO
    Aún no hay calificaciones
  • El Plano
    El Plano
    Documento7 páginas
    El Plano
    NICOLE GERALDINE RODAS CORNEJO
    Aún no hay calificaciones
  • La Recta
    La Recta
    Documento6 páginas
    La Recta
    NICOLE GERALDINE RODAS CORNEJO
    Aún no hay calificaciones