Documentos de Académico
Documentos de Profesional
Documentos de Cultura
101
101
6 Protocolos multiversión.
Bloqueo de elementos de
datos
Técnicas multiversión
102
102
6 Protocolos multiversión.
103
103
6 Protocolos multiversión.
* El uso de las versiones en las operaciones de lectura, hace que el plan ejecutado
104
no sea el plan concurrente original, sino el plan cronológico.
Para alcanzar este objetivo, los protocolos mantienen varias versiones de los elementos de datos
accedidos en el plan. Cuando una transacción solicita la lectura de un elemento de datos, se le
muestra la versión (valor) del elemento que vería si las transacciones se ejecutasen en orden
cronológico.
104
6 Protocolos multiversión.
…<MT(T3) < MT(T2) < MT(T1)<… Plan en serie cronológico:
T1 T2 T3
…anteriores ->T3->T2->T1->…posteriores
inicio Cualquier elemento escrito por una transacción
inicio podrá ser leído por transacciones más jóvenes pero
no por transacciones más viejas
inicio
• T3 podrá leer cualquier elemento escrito por
… transacciones más viejas que ella (…anteriores) pero no
por lás más jóvenes (T2, T1, …posteriores)
…
• T2 podrá leer cualquier elemento escrito por
… transacciones más viejas que ella (…anteriores, T3) pero
… no por lás más jóvenes (T1, …posteriores)
• T1 podrá leer cualquier elemento escrito por
… transacciones más viejas que ella (…anteriores, T3, T2)
pero no por lás más jóvenes ( …posteriores)
…
tiempo
105
105
6 Protocolos multiversión. Visibilidad de una
versión de X
MT(T3) < MT(T2) < MT(T1)
Versiones de X vistas por
T1 T2 T3 T1 T2 T3
…
… x0 x0 x0
… Xi
escribir(X) xi xi xi
…
… Xj
escribir(X) xj xj xi
…
Xk …
escribir(X) xk xj xi
…
tiempo
Las transacciones crean versiones de los elementos de datos al realizar operaciones de escritura.
Más adelante, se verá que no siempre va a estar permitido que una transacción actualice
(escriba) un elemento de datos y, en consecuencia, cree una nueva versión (reglas del
protocolo).
En las transparencia, se muestra la visibilidad de cada versión del elemento de datos X, es decir,
el valor que cada transacción leería después de las escrituras.
En el ejemplo, se asume que el elemento de datos X tiene un valor inicial (antes del plan) X0 , o
que no existe (NULO).
106
6 Protocolos multiversión. Visibilidad de una
versión de X
MT(T3) < MT(T2) < MT(T1)
Versiones de X vistas por
T1 T2 T3 T1 T2 T3
…
… x0 x0 x0
… Xi
escribir(X) xi xi xi
…
…
…
… Xk
escribir(X) xk xi xi
…
tiempo
107
6 Protocolos multiversión. Visibilidad de una
versión de X
MT(T3) < MT(T2) < MT(T1)
Versiones de X vistas por
T1 T2 T3 T1 T2 T3
…
… x0 x0 x0
… Xi
escribir(X) xi xi xi
…
… Xj
escribir(X) xj xj xi
…
…
…
tiempo
108
6 Protocolos multiversión. Visibilidad de una
versión de X
MT(T3) < MT(T2) < MT(T1)
Versiones de X vistas por
T1 T2 T3 T1 T2 T3
…
… x0 x0 x0
…
…
…
… Xj
escribir(X) xj xj x0
…
Xk … xk xj x0
escribir(X)
…
tiempo
109
6 Protocolos multiversión. Visibilidad de una
versión de X
MT(T3) < MT(T2) < MT(T1)
Versiones de X vistas por
T1 T2 T3 T1 T2 T3
…
… x0 x0 x0
…
Xk …
escribir(X) xk x0 x0
…
… Xj
escribir(X) xk xj x0
…
…
…
tiempo
110
6 Protocolos multiversión.
no cambia nunca
111
Para poder aplicar las ideas del protocolo MV, es decir, permitir crear una nueva versión
(actualización), y mostrar la versión adecuada (lectura) de un elemento de datos, el protocolo
necesita guardar información durante la ejecución del plan. ¿Qué información?
111
6 Protocolos multiversión.
112
112
6 Protocolos multiversión.
113
113
6 Protocolos multiversión.
114
114
6 Protocolos multiversión.
MT(T3) < MT(T2) < MT(T1) Plan en serie cronológico T3-T2-T1
T1 T2 T3 Versiones de X
MT_escritura(Xi) =MT(T3)
escribir(X) Xi MT_lectura(Xi) =MT(T3)
…
…
MT_escritura(Xj) =MT(T2)
escribir(X) Xj
MT_lectura(Xj) =MT(T2)
…
…
MT_escritura(Xk) =MT(T1)
escribir(X) Xk
MT_lectura(Xk) =MT(T1)
…
115
Hasta que no aparecen operaciones de lectura, cualquier transacción puede generar nuevas
versiones de los elementos de datos. El conflicto puede aparecer cuando se han producido ya
operaciones de lectura.
115
6 Protocolos multiversión.
MT(T3) < MT(T2) < MT(T1) Plan en serie cronológico T3-T2-T1
T1 T2 T3 Versiones de X
MT_escritura(Xi) =MT(T3)
escribir(X) Xi MT_lectura(Xi) =MT(T3)
…
…
MT_escritura(Xj) =MT(T2)
escribir(X) Xj
MT_lectura(Xj) =MT(T2)
…
…
MT_escritura(Xk) =MT(T1)
escribir(X) Xk
MT_lectura(Xk) =MT(T1)
leer(X)
T2 leerá la versión de X con marca de
escritura mayor que es menor o igual a la Xj
marca de tiempo de T2.
tiempo
Una operación de lectura
Operación de siempre se satisface
lectura 116
116
6 Protocolos multiversión.
MT(T3) < MT(T2) < MT(T1) Plan en serie cronológico T3-T2-T1
T1 T2 T3
escribir(X)
…
…
escribir(X)
…
…
escribir(X)
leer(X)
MT(T2) < MT_escritura(X) (que valdría
MT(T1) porque T1 es la transacción más
joven que escribió X).
tiempo
En el protocolo de ordenamiento por marcas
Operación de de tiempo este plan no sería posible: la
lectura transacción T2 sería abortada. 117
117
6 Protocolos multiversión.
MT(T3) < MT(T2) < MT(T1) Plan en serie cronológico T3-T2-T1
T1 T2 T3 Versiones de X
MT_escritura(Xi) =MT(T3)
escribir(X) Xi MT_lectura(Xi) =MT(T3)
…
leer(X) T1 leerá la versión Xi: es la versión con marca
de escritura mayor que es menor o igual a la
… marca de tiempo de T1.
escribir(X)
MT_escritura(Xi) ≤ MT(T1)
…
MT_lectura(Xi) se actualiza con la marca de
tiempo de la transacción que la lee (T1).
…
MT_lectura(Xi) ¬ MT(T1)
T2 será abortada:
tiempo MT_escritura(Xi) ≤ MT(T2)
MT_lectura(Xi) > MT(T2)
Operación de
escritura 118
El protocolo multiversión enseña a una transacción (lectura) la última versión actualizada por la
transacción cronológicamente anterior, o bien una versión creada por ella misma. El plan en
serie equivalente es el plan cronológico.
118
6 Protocolos multiversión.
MT(T3) < MT(T2) < MT(T1) Plan en serie cronológico T3-T2-T1
Versiones de X vistas por
T1 T2 T3 T1 T2 T3
…
… x0 x0 x0
… Xi
escribir(X) xi xi xi
… Xk
escribir(X) xk xi xi
… Xi
leer(X)
escribir(X)
tiempo
T2 y T1 pueden actualizar X
Operación de
escritura T3 no puede actualizar X 119
119
6 Protocolos multiversión.
MT(T3) < MT(T2) < MT(T1) Plan en serie cronológico T3-T2-T1
Versiones de X vistas por
T1 T2 T3 T1 T2 T3
…
… x0 x0 x0
… Xi
escribir(X) xi xi xi
… Xk
escribir(X) xk xi xi
… Xi
Xk leer(X)
xk xi xi
escribir(X)
tiempo
T2 y T1 pueden actualizar X
Operación de
escritura T3 no puede actualizar X 120
T2 siempre leerá la última versión creada por T3, en el momento de la lectura, en el ejemplo Xi ,
hasta que cree sus propias versiones. La lectura de T2 impide a T3 crear nuevas versiones.
T2 puede crear nuevas versiones de X que sólo serán leídas por T2, estas versiones no tienen
ningún efecto sobre las transacciones posteriores: T1 ya ha creado sus propias versiones.
120
6 Protocolos multiversión.
MT(T3) < MT(T2) < MT(T1) Plan en serie cronológico T3-T2-T1
Versiones de X vistas por
T1 T2 T3 T1 T2 T3
…
… x0 x0 x0
… Xi
escribir(X) xi xi xi
… Xk
escribir(X) xk xi xi
… Xi
leer(X) Xj
xk xj xi
escribir(X)
tiempo
T2 y T1 pueden actualizar X
Operación de
escritura T3 no puede actualizar X 121
Es importante observar que T2 crea una versión del elemento X intermedia entre las versiones Xi
y Xk .
T2 puede escribir porque la versión anterior Xi no ha sido leída por ninguna transacción más
joven que T2. A partir de ese momento T1, T2 y T3 leen sus propias versiones.
121
6 Protocolos multiversión.
MT(T3) < MT(T2) < MT(T1) Plan en serie cronológico T3-T2-T1
Versiones de X vistas por
T1 T2 T3 T1 T2 T3
… Xi
… Xi escribir(X) xi xi xi
… leer(X)
escribir(X) Xj xj xj xi
Xj
leer(X) Xj
leer(X)
Xk …
xk xj xi
escribir(X)
… Xi
leer(X)
tiempo
T1 puede actualizar X
Operación de
escritura T2 y T3 no puede actualizar X 122
T3 y T2 ya no pueden actualizar X, la versión creada por T3 ha sido leída por T2, y la versión
creada por T2 ha sido leída por T1.
122
6 Protocolos multiversión. Plan C: no es admitido Ejemplo 1
Constantes: M=2 N=3 por el protocolo
Versiones de X
T1 T2 T1 T2
X=90 90
Y=90 leer(X) X0=90 X0=90
90
X←X-N
leer(X)
X←X+M
escribir(X)
92
escribir(X)
Fin X0 X1=92
T1 será abortada:
MT_escritura(?) ≤ MT(T1)
MT(T1) < MT_lectura(X0) =(MT(T2))
tiempo
123
6 Protocolos multiversión. Plan D: admitido por Ejemplo 1
Constantes: M=2 N=3 el protocolo
Versiones de X
T1 T2 T1 T2
X=90 90 X0=90 X0=90
Y=90 leer(X)
X←X-N 87
escribir(X) 87 X1=87 X1=87
leer(X)
X←X+M 89
escribir(X) X1=87 X2=89
Fin
leer(Y) X1
Y¬Y+N
escribir(Y) T2 puede escribir:
Fin MT_escritura(?) ≤ MT(T2)
MT(T2) ≥ MT_lectura(X1) =(MT(T2))
tiempo
124
6 Protocolos multiversión. Plan D: admitido por Ejemplo 1
Constantes: M=2 N=3 el protocolo
Versiones de X
T1 T2 T1 T2
X=90 90 X0=90 X0=90
Y=90 leer(X)
X←X-N 87
escribir(X) 87 X1=87 X1=87
leer(X)
X←X+M 89
escribir(X) X1=87 X2=89
Fin
leer(Y)
Y¬Y+N
escribir(Y) En este plan se produce la anomalía
Fin de la lectura sucia: T2 lee un valor
aún no confirmado.
tiempo
125
6 Protocolos multiversión.
126
El protocolo B2F sólo permite que una transacción lea un dato actualizado por otra transacción
cuando que esta última lo desbloquea.
El protocolo OMT permite que una transacción lea un dato actualizado por otra transacción,
siempre que esta última sea más antigua que la primera.
-------------------------------------------------------------------------------------------
El protocolo OMT permite que dos transacciones actualicen un elemento de datos, si lo hacen en
el orden cronológico de sus transacciones.
126
6 Protocolos multiversión.
127
6 Protocolos multiversión.
La transacción T sólo puede generar una nueva versión, si la versión anterior no ha sido leída por
una transacción posterior a T.
T puede crear una nueva versión incluso cuando pueden existir versiones de X generadas por
transacciones posteriores a T.
Si un elemento de datos existe, siempre tiene una versión con marca de lectura y marca de
escritura.
128
Control de la concurrencia.
• Las transacciones esperan.
• Acceso exclusivo en actualización.
Bloqueo de elementos • El plan en serie equivalente puede ser
de datos cualquiera.
• Problema del bloqueo mortal.
PROTOCOLOS
129
129
Control de la concurrencia.
130
130
7 Concurrencia y recuperación.
DESHACER /
No Forzar
(transacciones confirmadas e interrumpidas)
REHACER
Inmediata
DESHACER /
Forzar
Recuperación de la BD
NO REHACER
Actualización
en el lugar
NO DESHACER /
No Forzar
REHACER
Diferida
NO DESHACER /
Forzar
NO REHACER
La recuperación se limita a deshacer la transacción activa (ya sea por anulación o por
interrupción) o a rehacer transacciones confirmadas.
131
7 Concurrencia y recuperación.
DESHACER
Recuperación de la BD
§ BD en disco
Actualización
en el lugar
DESHACER
Diferida
§ buffer de datos
Funcionamiento
correcto del sistema
(anulaciones)
132
132
7 Concurrencia y recuperación.
133
133
7 Concurrencia y recuperación.
Lectura sucia
T1 T2
r1(X)
w1(X) Lectura
r2(X) sucia
…
…
c1
tiempo tiempo
No provoca
ningún problema
134
Sin embargo, ésta lectura sucia no provoca ningún problema, el dato (actualizado por T1) y leído
por T2 (lectura sucia) finalmente ha sido confirmado por T1.
134
7 Concurrencia y recuperación.
Lectura sucia
T1 T2 T1 T2
r1(X) r1(X)
w1(X) Lectura w1(X) Lectura
r2(X) sucia r2(X) sucia
… …
… …
… c2
a1 Problema a1 Problema
(usuario o SGBD) (usuario o SGBD)
135
135
7 Concurrencia y recuperación.
Lectura sucia
T1 T2 T1 T2
r1(X) r1(X)
w1(X) Lectura w1(X) Lectura
r2(X) sucia r2(X) sucia
… …
… …
… c2
Problema
Fallo del sistema Fallo del sistema
tiempo tiempo tiempo tiempo
T1 y T2 T1
interrumpidas interrumpida
136
En estos dos ejemplos, hay la lectura sucia ya que T2 lee un dato modificado por la transacción
T1 que aún no ha sido confirmada.
136
7 Concurrencia y recuperación.
137
7 Concurrencia y recuperación.
Lectura sucia
BUFFERS
transacciones datos diario
[inicio, T1]
t0 r1(x) 10
[leer, T1, x]
t1 w1(x)
… 15 [escribir, T1 , x, 10, 15]
…
t10 r2(x) [inicio, T2]
[leer, T2,x]
t11 r2(y)
5 [leer, T2, y]
y←x+y
[escribir, T2 , y, 5, 20]
t12 w2(y) 20
[anular, T1]
…
t13 a1
BD No se ilustran las
acciones de
gestión del fichero
diario
de diario
138
7 Concurrencia y recuperación.
Anulación en cascada
tiempo t0
T1 anulada
Deshacer
T2 activa
Deshacer
punto de control
139
7 Concurrencia y recuperación.
Lectura sucia
BUFFERS
transacciones datos diario
[inicio, T1]
t0 r1(x) 10
[leer, T1, x]
t1 w1(x)
… 15 [escribir, T1 , x, 10, 15]
… … Información
t10 r2(x) [inicio, T2] necesaria para la
t11 r2(y) [leer, T2,x] anulación en
5 cascada
y←x+y [leer, T2, y]
Para realizar la anulación en cascada de una transacción, son necesarias las entradas del diario
de tipo [leer, T, X], que no habían sido utilizadas hasta ahora para la recuperación de
transacciones.
140
7 Concurrencia y recuperación.
141
141
7 Concurrencia y recuperación.
Planes y recuperabilidad:
142
• Protocolo OMT: anula transacciones para asegurar la seriabilidad del plan y revierte
posteriormente la transacción anulada.
• Protocolo MV: anula transacciones para asegurar la seriabilidad del plan. No las revierte
posteriormente.
En los tres protocolos (B2F, OMT, MV), existen variantes (planes estrictos) que evitan la lectura
sucia y, por lo tanto, la anulación en cascada.
142
7 Concurrencia y recuperación.
Planes y recuperabilidad:
ü Planes recuperables.
ü Planes sin anulación en cascada.
ü Planes estrictos.
143
Como la lectura sucia puede provocar la anulación en cascada, se trata de extender los
protocolos de control de la concurrencia, para controlar los efectos de dicha anomalía, de forma
que la anulación de una transacción no tenga efectos colaterales, evitando que tenga
consecuencias muy graves y que sea costosa de ejecutar.
143
7 Concurrencia y recuperación.
144
Los planes para el control de la concurrencia, que admiten sólo planes recuperables, aseguran
que una transacción confirmada nunca será anulada.
El protocolo para el control de la concurrencia de cualquier SGBD debe asegurar, como mínimo,
planes recuperables.
144
7 Concurrencia y recuperación. Ejemplo 1
T1 T2
leer(X) leer(X)
X¬X-N X¬X+M
escribir(X) escribir(X)
leer(Y) …
Y¬Y+N
escribir(Y)
…
tiempo tiempo
145
145
7 Concurrencia y recuperación. Ejemplo 1
T1 T2 T1 T2
leer(X) leer(X)
X¬X-N X¬X-N Lectura
leer(X) escribir(X) sucia
X¬X+M leer(X)
escribir(X) X¬X+M
leer(Y) escribir(X)
escribir(X) Fin (Confirmación)
Fin (Confirmación) leer(Y)
Y¬Y+N Y¬Y+N
escribir(Y) escribir(Y)
Fin (Confirmación) Fin (Confirmación)
tiempo tiempo tiempo tiempo
Pérdida de
actualizaciones
C: Plan recuperable D: Plan NO recuperable
Ninguna transacción lee un T2 lee un dato actualizado por T1 y T2
dato actualizado por la otra y se confirma antes que T1 146
C no es un plan serializable.
D es un plan serializable.
146
7 Concurrencia y recuperación. Ejemplo 1
T1 T2 T1 T2
leer(X) leer(X)
X¬X-N Lectura X¬X-N Lectura
escribir(X) sucia escribir(X) sucia
leer(X) leer(X)
X¬X+M X¬X+M
escribir(X) escribir(X)
leer(Y) Fin (Confirmación)
Y¬Y+N leer(Y)
escribir(Y) Y¬Y+N
Fin (Confirmación) escribir(Y) Anulación en
Fin (Confirmación) Anulación cascada de T2
tiempo tiempo tiempo tiempo
147
7 Concurrencia y recuperación. Ejemplo 1
T1 T2
leer(X)
X¬X-N Lectura
escribir(X) sucia
leer(X)
X¬X+M
escribir(X)
leer(Y)
Y¬Y+N
escribir(Y)
Anulación en
Anulación
cascada de T2
tiempo tiempo
G: Plan recuperable
T2 lee un dato actualizado por T1,
pero no se confirma antes de que
148
se confirme T1
148
7 Concurrencia y recuperación.
En los protocolos que aseguran planes concurrentes recuperables, puede seguir produciéndose
la lectura sucia y el fenómeno de la anulación en cascada.
Si se quiere evitar el fenómeno de la anulación en cascada, hay que evitar la lectura sucia.
Esto es lo que hacen los protocolos que aseguran planes sin anulación en cascada.
149
7 Concurrencia y recuperación.
150
En un protocolo que controle planes “sin anulación en cascada”, la lectura de T2 del elemento X,
se quedaría en espera hasta que T1 finalizase: si T1 se anula se deshace su actualización y T2
leerá el valor original de X, si T1 se confirma T2 podrá leer el valor actualizado de X.
150
7 Concurrencia y recuperación. Ejemplo 1
T1 T2 T1 T2
leer(X) inicio
X¬X-N Lectura leer(X)
escribir(X) sucia X¬X-N
leer(X) escribir(X)
X¬X+M leer(Y)
escribir(X) Y¬Y+N
leer(Y) escribir(Y)
Y¬Y+N Fin
escribir(Y) leer(X)
Anulación en
Anulación X¬X+M
cascada de T2
escribir(X)
…
tiempo tiempo tiempo tiempo
El plan H es una plan sin anulación en cascada, en este caso se ha añadido una operación inicial a
T2 al ejemplo original para evitar que sea un plan en serie y dé lugar a pensar que para ser un
plan sin anulación en cascada, se tiene que ser un plan en seri.
151
7 Concurrencia y recuperación.
152
152
7 Concurrencia y recuperación.
P: … w1(x), …, w2(x), a1 …
P es “sin anulación en cascada”.
153
Estas comprobaciones adicionales complican la ejecución del proceso de anulación. Para evitar
esta situación, se definen los planes estrictos.
153
3 Planes serializables por conflictos.
Diario en disco
escribe(X) …
x=11
… [escribir, T1 , X, 2, 11]
X¬X-N … …
escribir(X) [inicio, T2]
x=50
… …
Anulación [escribir, T2 , X, 11, 50]
tiempo tiempo …
En la transparencia se muestra como si el valor de X se escribiera en disco aunque podría ser que
la modificación sólo estuviera en memoria principal.
154
7 Concurrencia y recuperación.
155
155
7 Concurrencia y recuperación.
Análisis del tratamiento de la lectura sucia en los protocolos:
Protocolo de bloqueo en dos fases explícito (B2F)
T1 T2
bloquear_escritura(X)
leer(X)
escribir(X)
desbloquear(X)
…
bloquear_escritura(X)
leer(X)
Lectura
escribir(X)
sucia
…
tiempo tiempo
156
Con el protocolo B2F explícito puede aparecer el problema de la "lectura sucia", que obliga a la
anulación en cascada, como se observa en el ejemplo.
156
7 Concurrencia y recuperación.
Análisis del tratamiento de la lectura sucia en los protocolos:
157
El protocolo B2F estricto significa que cuando una transacción bloquea para escritura un
elemento de datos X, es porque ninguna otra transacción activa ha accedido a él y además
ninguna otra transacción podrá hacerlo hasta que T finalice. Esto significa que sólo se permite
concurrencia en lectura.
157
7 Concurrencia y recuperación.
Análisis del tratamiento de la lectura sucia en los protocolos:
Protocolo de bloqueo en dos fases estricto (B2F)
T1 T2
bloquear_escritura(X)
leer(X)
escribir(X)
bloquear_escritura(X) Espera
…
confirmación/
anulación
bloquear_escritura(X)
leer(X)
escribir(X)
…
tiempo tiempo
158
158
7 Concurrencia y recuperación.
Análisis del tratamiento de la lectura sucia en los protocolos:
Protocolo de ordenamiento por marcas de tiempo (OMT)
T1 T2 MT_lectura(X) MT_escritura(X)
MT(T') < MT(T1) < MT(T2)
MT(T’) MT(T’)
leer(X) MT(T1)
escribir(X) MT(T1)
leer(X) MT(T2)
Lectura
escribir(X) MT(T2)
sucia
…
…
tiempo tiempo
159
159
7 Concurrencia y recuperación.
Análisis del tratamiento de la lectura sucia en los protocolos:
160
La operación de T debería ser aceptada según las reglas de OMT, pero se retrasa hasta asegurar
que la actualización de X es confirmada.
El protocolo de ordenamiento estricto actúa como B2F estricto, cuando una transacción accede
en escritura a un elemento de datos, ninguna otra transacción puede acceder a él (ni en lectura
ni en escritura). Esto quiere decir que sólo se admite la concurrencia en lectura.
160
7 Concurrencia y recuperación.
Análisis del tratamiento de la lectura sucia en los protocolos:
Protocolo de ordenamiento por marcas de tiempo estricto (OMT)
T1 T2 MT_lectura(X) MT_escritura(X)
MT(T') < MT(T1) < MT(T2)
MT(T’) MT(T’)
leer(X) MT(T1)
escribir(X) MT(T1)
leer(X) Espera
…
confirmación/
anulación
leer(X) MT(T2)
escribir(X) MT(T2)
…
tiempo tiempo
161
161
7 Concurrencia y recuperación.
Análisis del tratamiento de la lectura sucia en los protocolos:
Protocolo multiversión MV
Versiones de X
T1 T2 T1 T2
x0 X0 X0
Lectura
leer(X)
xi sucia
escribir(X) xi
leer(X) Xi Xi
MT(T1) < MT(T2)
xj
escribir(X)
… Xi Xj
…
tiempo
162
162
7 Concurrencia y recuperación.
Análisis del tratamiento de la lectura sucia en los protocolos:
163
La operación de T debería ser aceptada según las reglas de MV, pero se retrasa hasta asegurar
que la actualización de X es confirmada.
El protocolo de MV estricto actúa como B2F estricto, cuando una transacción accede en escritura
a un elemento de datos, ninguna otra transacción puede acceder a él (en lectura).
163
7 Concurrencia y recuperación.
Análisis del tratamiento de la lectura sucia en los protocolos:
Protocolo multiversión estricto MV
Versiones de X
T1 T2 T1 T2
x0 X0 X0
leer(X)
xi
escribir(X)
leer(X) Espera Xi
MT(T1) < MT(T2)
confirmación xi
leer(X) Xi
…
…
tiempo 164
164
7 Concurrencia y recuperación.
Análisis del tratamiento de la lectura sucia en los protocolos:
Protocolo multiversión estricto MV
Versiones de X
T1 T2 T1 T2
x0 X0 X0
leer(X)
xi
escribir(X)
leer(X) Espera Xi X0
MT(T1) < MT(T2)
anulación x0
leer(X) X0
…
…
tiempo 165
165