Elementos de Bases de Datos Repaso Concurrencia Concurrencia

Anuncio
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
Repaso
Elementos de
Bases de Datos
Hasta ahora vimos que si constamos con un
DBMS que maneje transacciones, podemos
garantizar que las transacciones van a
respetar las siguientes propiedades:
Dpto.Ciencias e Ingeniería de la Computación
Universidad Nacional del Sur
Consistencia (consistency)
Atomicidad (atomicity),
Aislación (isolation)
Durabilidad (durability).
Lic. María Mercedes Vitturini
[[email protected]]
Clase 16
A cargo del prgdor
A cargo del DBMS
1er. Cuatrimestre de 2004
Elementos de Bases de Datos
Clase 16
Concurrencia
2
Concurrencia y Serilizabilidad
Se denomina planificación a una secuencia de
ejecución
Cuando varias transacciones se ejecutan
concurrentemente, no puede asegurarse
que la planificación sea en serie.
Una planificación en serie es una planificación en
donde las instrucciones pertenecientes a una
transacción aparecen todas juntas.
En entornos multiprogramados, es posible ejecutar
varias transacciones de manera concurrente.
Una planificación es serializable si el resultado
de su ejecución equivale a alguna
planificación en serie.
Cuando se ejecutan varias transacciones de manera
concurrente, se puede perder la consistencia de la
base de datos aún cuando cada una de las
transacciones individuales sea correcta
Garantizar planificaciones serializables es el
modo de garantizar la propiedad de
aislamiento de las transacciones.
Elementos de Bases de Datos
Clase 16
Elementos de Bases de Datos
Clase 16
3
Ejemplos
Serializabilidad de Conflictos
T0
T1
T2
read(X)
El algoritmo de Prueba de Serializabilidad de Conflictos
consiste en la construcción de un grafo dirigido. Si el
mismo no tiene ciclos, se puede asegurar que la
planificación es serializable en conflictos; de lo contrario,
no lo es.
Si la planificación es serializable en conflictos entonces es
serializable. Sin embargo, que una planificación no sea
serializable en conflictos no significa que no sea
serializable.
A continuación, presentaremos otra forma de
serializabilidad (de vistas) que requiere de un algoritmo
de verificación más complejo.
Elementos de Bases de Datos
Clase 16
4
5
Planificación 1
T0
X = X + 10
read (X)
read (Y)
read(Z)
Z= Z * 10
T2
T1
write (Z)
read (Z)
Z = X+Y+Z
write (Z)
write (X)
Z=X
write (Z)
El grafo no contiene ciclos, por lo
tanto la planificación 1 es
Serializable en cuanto a Conflictos.
Esta planificación concurrente es
equivalente a la ejecución en serie
<T2, T1, T0>
Elementos de Bases de Datos
Clase 16
6
1
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
Serializabilidad de Vistas
Ejemplos
T0
T1
T2
Planificación 2
read(X)
Dos planificaciones S y S’ son serializables en cuanto a
vistas si se cumple que:
T0
read (X)
read (Y)
read(Z)
Z= Z * 10
T2
write (Z)
read (Z)
Z = X+Y+Z
write (Z)
X = X + 10
write (X)
Z=X
write (Z)
T1
El grafo si contiene ciclos, por lo
tanto la planificación 2 NO es
Serializable en cuanto a Conflictos.
Esto no significa que la
planificación no sea serializable.
Queda como ejercicio para el lector
la comprobación
Elementos de Bases de Datos
Clase 16
1. Para cada dato Q, si Ti lee el valor inicial de Q en S,
entonces Ti debe leer el valor inicial de Q en S’.
2. Para cada dato Q, si Ti ejecuta Read(Q) en S y ese
valor fue producido por Tj (si existe), entonces Ti
debe leer en S’ el valor producido por Tj.
3. Para cada dato Q, la transacción (si existe) que
ejecuta Write(Q) final en la planificación S debe
ejecutar la operación final Write(Q) en la
planificación S´.
Elementos de Bases de Datos
Clase 16
7
8
Serializabilidad de Vistas
Serializabilidad de Vistas
T1
Las condiciones 1 y 2 aseguran que cada transacción
lee los mismos valores en ambas planificaciones y, por
lo tanto, realiza el mismo cálculo.
La condición 3, junto con las condiciones 1 y 2, asegura
que ambas planificaciones resultan en el mismo estado
final del sistema.
Una planificación es serializable en vistas si es equivalente en vistas a una planificación en serie.
La equivalencia en vistas es menos rigurosa que la
equivalencia en conflictos. Esto es, toda planificación
serializable en conflictos es serializable en vistas pero la
recíproca no es cierta.
Elementos de Bases de Datos
Clase 16
9
Pruebas de Serializabilidad de
Vistas
T2
T3
Read(Q);
Write(Q).
Write(Q).
Write(Q).
Esta planificación es serializable en vistas pues es
equivalente a la planificación <T1,T2,T3>.
Las transacciones T2 y T3 realizan escrituras sobre Q
sin haber leído el valor de Q.
Este tipo de escrituras se denominan escrituras ciegas.
Las escrituras ciegas aparecen en cualquier
planificación serializable en vistas que no sea
serializable en conflictos.
Elementos de Bases de Datos
Clase 16
10
Pruebas de Serializabilidad de
Vistas
Para determinar la serializabilidad de vistas en
una planificación, necesitamos construir un grafo
de precedencia etiquetado.
1. Se añade una arista Ti0→ Tj si la
Sea S una planificación que involucra a las
transacciones {T1,T2,...,Tn}.
aquellas transacciones que no conducen a
Tf (solamente realizan lecturas).
3. Por cada dato Q tal que Tj lee el valor de Q
escrito por Ti, y Tk ejecuta Write(Q) tal que
Tk ≠ Tb se hace lo siguiente:
Se agregan dos transacciones ficticias Tb y Tf.
Tb (transacción inicial) escribe cada dato leído por las
transacciones de S.
Tf (transacción final) lee cada dato escrito por las
transacciones de S.
Elementos de Bases de Datos
Clase 16
11
transacción Tj lee el dato Q escrito por Ti.
2. Eliminar las transacciones inútiles, esto es,
Continúa ...
Elementos de Bases de Datos
Clase 16
12
2
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
Pruebas de Serializabilidad de
Vistas
Pruebas de Serializabilidad de
Vistas
Las reglas a y b son casos especiales que resultan de
que Tb y Tf representan la primera y última transacción
respectivamente.
La regla 3c dice que si Ti escribe un dato que lee Tj y Tk
escribe el mismo dato entonces Tk debe aparecer antes
de Ti o bien después de Tj.
Al aplicar la regla 3c no se requiere que Tk esté antes de
Ti y después de Tj. Solamente se exige que o bien
preceda a Ti, o bien suceda a Tj.
Si el grafo de precedencia no contiene ciclos entonces la
planificación es serializable en vistas. No obstante, la
aparición de un ciclo (cuando existen etiquetas distintas
de 0) no implica que la planificación no sea serializable
Elementos de Bases de Datos
en vistas.
Clase 16
14
Por cada dato Q tal que Tj lee el valor de Q
escrito por Ti, y Tk ejecuta Write(Q) tal que
Tk ≠ Tb se hace lo siguiente:
a. Si Ti=Tb y Tj≠Tf entonces se inserta en el grafo la
arista Tj0→ Tk.
b. Si Ti≠Tb y Tj=Tf entonces se inserta en el grafo la
arista Tk0→ Ti.
c. Si Ti≠Tb y Tj ≠ Tf entonces se insertan en el grafo
las aristas Tkp→ Ti y Tjp→ Tk, donde p es un
número de etiqueta no usada en el grafo
etiquetado.
Elementos de Bases de Datos
Clase 16
13
Planificación 1: no serializable en vistas
Pruebas de Serializabilidad de Vistas
1. Se añade una arista
Ti0→
Tj si la transacción Tj lee el
dato Q escrito por Ti.
2. Eliminar las transacciones inútiles, esto es, aquellas
transacciones que no conducen a Tf (solamente
realizan lecturas).
3. Por cada dato Q tal que Tj lee el valor de Q escrito
por Ti, y Tk ejecuta Write(Q) tal que Tk ≠ Tb se hace
lo siguiente:
a. Si Ti=Tb y Tj≠Tf entonces se inserta en el grafo la arista Tj0→
Tk.
b. Si Ti≠Tb y Tj=Tf entonces se inserta en el grafo la arista Tk0→
Ti.
c. Si Ti≠Tb y Tj ≠ Tf entonces se insertan en el grafo las aristas
Tkp→ Ti y Tjp→ Tk, donde p es un número de etiqueta no
usada en el grafo etiquetado.
Elementos de Bases de Datos
Clase 16
T2
Write(Q).
Regla 1
0
Tb
0
T1
Regla 1
Regla 3b
Elementos de Bases de Datos
Clase 16
T1
Read(Q);
T2
Read(Q);
Write(Q).
Write(Q).
Equivale a la Planificación:
Tf
(T1,T2,T3)
Regla 3a
Regla 3b
0
0
T2
T3
Write(Q).
Write(Q).
T1
16
Planificación 3: serializable en vistas
T3
Write(Q).
0
T2
0
Write(Q).
Regla 1
Tf
Regla 3a
0
Read(Q);
Tb
T2
Write(Q).
15
Planificación 2: serializable en vistas
T1
T1
Read(Q);
0
T3
Tf
13c
01
Regla 1
T1
03a
13c
T2
01/3b
01
T3
03a3b
0
Los subíndices en las etiquetas indican las reglas que generan el arco.
Regla 3a o 3b
Elementos de Bases de Datos
Clase 16
Tb
17
Elementos de Bases de Datos
Clase 16
18
3
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
Planificación 3: serializable en vistas
Tb
Tf
1
0
0
1
T1
0
0
T2
Tb
0
T3
0
T1
0
0
T2
1ra
T1
0
0
T2
Elementos de Bases de Datos
Clase 16
19
T2
T3
Read(Y)
0
T1
Read(X)
Write(X).
Tb
Write(X).
T1
T1
01/3a
13c
T2
03b
13c
Los arcos con
etiqueta 1 representan 2 opciones distintas.
Tf
Grafo Acíclico.☺
Equivale a
(T1,T3,T2)
T3
T2
0
1
0
T3
Tf
0
0
T3
0
0
Tb
03a/3b
0
1
0
0
01
T2
0
Tf
01
0
1
Tf
0
Write(Y);
01
0
0
Write(X).
Tb
20
Planificación 5: serializable en vistas
Tb
Read(X);
T2
01
(T1,T2,T3)
Planificación 5: serializable en vistas
01
01
T1
Equivale a la
Planificación:
Elementos de Bases de Datos
Clase 16
Tf
01
01
Grafo Acíclico.☺
0
T3
T1
Read(Y);
Write(Z).
2da Opción:
Tf
0
1
T2
Tb
Tb
0
Opción:
Grafo Cíclico.
0
T3
T1
Read(X);
Write(X);
Read(X);
Write(Y).
Tf
1
0
Planificación 4: no serializable en vistas
Los arcos con
etiqueta 1 representan 2 opciones distintas.
T1
0
1
T2
0
T3
1ra Opción:
2da Opción:
Grafo Cíclico.
0
Elementos de Bases de Datos
Clase 16
21
Elementos de Bases de Datos
Clase 16
22
Ejercicio
Control de concurrencia
Dada la siguiente planificación:
T1
T2
T3
Una propiedad fundamental de una transacción
es el aislamiento. Esta propiedad debe
respetarse aun en entornos concurrentes.
Read(X);
Read(Y)
Write(X).
Read(X)
Write(Y);
Write(X).
Write(X).
1) Determinar si es serializable en vistas.
2) Si lo es, encontrar una planificación serial equivalente.
Verificar los resultados asignándole valores a los datos
X e Y, asumiendo que en cada transacción que realiza
un Write sobre un mismo dato, se modifica el mismo.
Elementos de Bases de Datos
Clase 16
23
Es necesario que el sistema controle la
interacción entre las transacciones concurrentes;
dicho control se lleva a cabo a través de
esquemas de control de concurrencia.
A continuación vamos a ver esquemas de control
de concurrencia basados en la propiedad de
serializabilidad. Inicialmente estudiaremos
algunos protocolos de bloqueo.
Elementos de Bases de Datos
Clase 16
24
4
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
Protocolos basados en bloqueo
(locking)
Otorgamiento de bloqueos
Una forma de asegurar la serializabilidad es exigir
que el acceso a los datos se haga de modo
mutuamente excluyente.
Tipos de bloqueo:
Compartido (Lock-S): si una transacción T ha obtenido un
bloqueo compartido sobre un dato Q entonces T puede
leer el dato pero no escribir Q.
Exclusivo (Lock-X): si una transacción T ha obtenido un
bloqueo exclusivo sobre un dato Q entonces T puede leer y
escribir Q.
Este tipo de protocolos puede caer en deadlock.
Elementos de Bases de Datos
Clase 16
25
Planificación (parcial) 6: en deadlock
T1
T2
Lock-X(B)
Read(B)
B := B - 50
Write(B)
Lock-S(A)
Read(A)
Lock-S(B)
Lock-X(A)
...
...
T2 pide un lock
compartido de B
pero espera a que lo
libere T1.
T1 pide un lock
exclusivo de A pero
espera a que lo
libere T2.
Elementos de Bases de Datos
Clase 16
27
Compatibilidad de bloqueos:
Compatibilidad Lock-S Lock-X
Lock-S
Si
No
Lock-X
No
No
Elementos de Bases de Datos
Clase 16
26
Protocolos basados en bloqueo
(locking)
Si se intenta lograr un máximo de concurrencia
desbloqueando datos tan pronto como sea
posible, podemos obtener estados
inconsistentes.
Si se retiene demasiado tiempo un dato, pueden
ocurrir situaciones de deadlock.
Los protocolos de bloqueos que aseguran
serializabilidad que vamos a estudiar:
Protocolo de Bloqueo de Dos Fases.
Protocolo Basado en Grafos.
Elementos de Bases de Datos
Clase 16
28
Protocolo de bloqueo de dos
fases
Otorgamiento de bloqueos
Para evitar inanición (starvation) de transacciones,
esto es, transacciones que nunca alcanzan a disponer
de los recursos que necesitan, se debe respetar cierta
política de otorgamiento de bloqueos.
Cuando una transacción Ti requiere un bloqueo sobre
el dato Q en un modo M, el bloqueo es concedido si:
No existe otra transacción Tj teniendo un bloqueo sobre Q
en un modo incompatible con M.
No existe otra transacción Tj esperando un bloqueo sobre Q
que hizo el requerimiento de bloqueo antes que la
transacción Ti.
Elementos de Bases de Datos
Clase 16
Si una transacción requiere un bloqueo sobre un
item de dato particular y otra transacción tiene
un bloqueo no compatible con el requerido sobre
el mismo item de dato entonces no se puede
conceder el bloqueo.
29
Un protocolo que garantiza la serializabilidad es
el protocolo de bloqueo de dos fases, el cual
requiere que cada transacción realice sus
solicitudes de bloqueo y desbloqueo en dos
fases:
Fase de Crecimiento: Una transacción puede
obtener bloqueos pero no puede liberar ningún
bloqueo.
Fase de Encogimiento: Una transacción puede
liberar bloqueos pero no puede obtener ningún
bloqueo nuevo
Elementos de Bases de Datos
Clase 16
30
5
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
Retroceso en cascada en planificación parcial
Protocolo de Bloqueo de Dos
Fases
T1
El protocolo de bloqueo de dos fases sufre
de las siguientes desventajas:
Posibilidad de que alguna planificación caiga en
deadlock.
Puede generar retrocesos en cascada
(cascading rollback), esto es,antes la falla de
una transacción, se genera que fallen otras
transacciones.
Puede generar planificaciones no recuperables,
como resultado de un retroceso en cascada
Elementos de Bases de Datos
Clase 16
31
Otros protocolos de bloqueo de
dos fases
33
Protocolo de bloqueo de dos fases enriquecido
Inicialmente una transacción está en la fase de crecimiento.
La transacción adquiere todos los bloqueos que necesita.
Una vez que la transacción libere un bloqueo entra en la
fase de encogimiento y no podrá solicitar más bloqueos.
Este protocolo garantiza la serializabilidad en conflictos pero
no garantiza que no se presenten situaciones de deadlock.
En este protocolo no es posible que una transacción que
usa un dato modifique el modo de acceso al mismo (de
exclusivo a compartido o de compartido a exclusivo).
Para obtener mayor concurrencia se cuenta con dos modos
de conversión:
Upgrade: de modo compartido a exclusivo.
Downgrade: de modo exclusivo a compartido.
Elementos de Bases de Datos
Clase 16
T3
Lock-X(A)
Read(A)
Lock-S(B)
Read(B)
Write(A)
Unlock(A)
Falla T1 luego del
Read(A) de T3
Lock-X(A)
Read(A)
Write(A)
Unlock(A)
...
Lock-S(A)
Read(A)
...
...
Retroceso
en cascada
de T2 y T3
Elementos de Bases de Datos
Clase 16
32
Dos Fases Estricto y Riguroso
El protocolo de bloqueo de dos fases estricto es similar
al protocolo de bloqueo de dos fases pero donde los
bloqueos en modo exclusivo deben mantenerse hasta
que la transacción alcance el estado cometido.
Esto asegura que cualquier dato escrito por una
transacción no cometida esté bloqueado en modo
exclusivo hasta que la transacción esté cometida.
El protocolo de bloqueo de dos fases riguroso mantiene
todos los bloqueos hasta que la transacción alcance el
estado cometido.
Estos dos protocolos son ampliamente utilizados en
sistemas comerciales de bases de datos.
Elementos de Bases de Datos
Clase 16
T2
35
El protocolo de bloqueo de dos fases estricto no permite
a una transacción acceder a los datos generados por
otra transacción no cometida.
Soluciona el problema de retrocesos en cascada. Sigue teniendo
problemas de deadlock.
El protocolo de bloqueo de dos fases riguroso pretende
que una transacción solicite todos los bloqueos de los
datos que necesita al inicio de la transacción y los libere
cuando la transacción finaliza.
Soluciona el problema de retrocesos en cascada y el problema
de deadlock, sin embargo incorpora el problema de inanición.
Elementos de Bases de Datos
Clase 16
34
Protocolo de bloqueo de dos
fases enriquecido
Cuando una transacción T realiza una operación
Read(Q) se ejecuta:
Lock-S(Q); Read(Q).
Cuando una transacción T realiza una operación
Write(Q) se ejecuta:
Si T tiene un acceso compartido entonces ejecuta:
Upgrade(Q); Write(Q).
De lo contrario, T ejecuta:
Lock-X(Q); Write(Q).
Una mejora sustancial a este protocolo se logra
imponiendo una estructura u ordenación sobre el
conjunto de datos
de la base de datos.
Elementos de Bases de Datos
Clase 16
36
6
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
T1
Ejemplo: Protocolo de
Bloqueo
T2
lock-s (A)
Ejemplo: Protocolo de
Bloqueo dos Fases
read (A)
unlock (A)
lock-s (B)
read (B)
Dadas las transacciones
T1: read(A)
read(B)
write(A)
write(B)
T2: read(D)
read(A)
write(A)
write(D)
Para las
transacciones
anteriores
unlock (B)
lock-s (D)
read (D)
unlock (D)
lock-s (A)
FC
read (B)
lock-x (D)
read (D)
write (A)
unlock (A)
lock-x (A)
write (A)
lock-x (B)
write (B)
unlock (A)
read (A)
write (A)
FD
unlock (A)
write (B)
write (D)
lock-x (D)
T1
write (D)
Elementos de Bases de Datos
Clase 16
37
Ejemplo: Protocolo de
Bloqueo dos Fases
Estricto
T2
lock-s (A)
read (B)
T1
unlock (D)
38
T2
lock-x (A)
read (A)
lock-x (B)
Para las
transacciones
anteriores
read (A)
lock-s (B)
read (B)
lock-x (D)
read (D)
lock-x (A)
lock-s (D)
write (A)
read (D)
Protocolo de
Bloqueo de dos
Fases Estricto.
La
planificación
resultante
serializable.
lock-s (A)
read (A)
upgrade (A)
upgrade(A)
…
FD
unlock (B)
unlock (B)
unlock (D)
FC
write (A)
Protocolo de
Bloqueo de dos
Fases.
La
planificación
resultante es
serializable.
lock-x (A)
Elementos de Bases de Datos
Clase 16
Protocolo de
Bloqueo de dos
Fases
Enriquecido.
La
planificación
resultante cae
en deadlock.
read (A)
lock-x (B)
lock-x (A)
unlock (A)
Para las
transacciones
anteriores
T2
read (A)
unlock (A)
Protocolo de bloqueo SIN
imponer dos fases.
La planificación resultante
no es serializable.
Ejemplo: Protocolo de
Bloqueo dos Fases
Enriquecido
T1
lock-x (A)
…
write (B)
unlock (A)
unlock (B)
read (A)
write (A)
write (D)
unlock (A)
unlock (D)
Elementos de Bases de Datos
Clase 16
Protocolo del árbol
40
Conjunto de Transacciones
En el protocolo del árbol, el único tipo de bloqueo
permitido es Lock-X.
Para cada transacción T, su primer bloqueo puede
ser sobre cualquier dato.
A partir de ese momento, T puede bloquear un dato
Q sólo si T bloquea actualmente al padre de Q.
Los datos pueden desbloquearse en cualquier
momento.
Si T bloqueó y desbloqueó un dato Q, no puede
volver a bloquearlo nuevamente.
Elementos de Bases de Datos
Clase 16
Elementos de Bases de Datos
Clase 16
39
41
T1
T2
T3
T4
Lock-X(B)
Lock-X(E)
Lock-X(D)
Unlock(B)
UnLock(E)
Lock-X(G)
Unlock(D)
Unlock(G)
Lock-X(D)
Lock-X(H)
Unlock(D)
Unlock(H)
Lock-X(B)
Lock-X(E)
Unlock(E)
Unlock(B)
Lock-X(D)
Lock-X(H)
Unlock(D)
Unlock(H)
Elementos de Bases de Datos
Clase 16
42
7
Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación
Elementos de Bases de Datos – 2do. Cuatrimestre de 2004
Planificación 6 serializable
Grafo de base de datos
T1
A
C
B
Lock-X(E)
Lock-X(D)
Unlock(B)
Unlock(E)
F
D
G
E
Lock-X(G)
Unlock(D)
I
H
T2
T3
T4
Lock-X(B)
J
Unlock(G)
Elementos de Bases de Datos
Clase 16
43
Lock-X(D)
Lock-X(H)
Unlock(D)
Unlock(H)
Lock-X(B)
Lock-X(E)
Unlock(E)
Unlock(B)
Elementos de Bases de Datos
Clase 16
Lock-X(D)
Lock-X(H)
Unlock(D)
Unlock(H)
44
Temas de la clase de hoy
Serializabilidad.
Serializabilidad en cuanto a vistas.
Pruebas de serializabilidad en cuanto a vistas. Grafo de
serializabilidad en vistas etiquetado.
Esquemas de control de concurrencia
Esquemas de control basados en bloqueo
Protocolo de Bloqueo
Protocolo de Bloqueo de Dos Fases, Dos Fases Enriquecido, Dos
Fases Estricto, Dos Fases Riguroso
Protocolo de Arbol
Bibliografía
“Fundamentos de Bases de Datos” – A. Silberschatz. Capítulos
13 y 14.
Databases and Transaction Procesing - Philip Lewis. Capítulo
23.
Elementos de Bases de Datos
Clase 16
45
8
Descargar