Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 4
Control de la concurrencia
1
Control de la concurrencia.
Objetivos:
ü Estudiar la ejecución concurrente de transacciones:
problemas y soluciones.
ü Estudiar el tratamiento de este problema en SQL.
ü Analizar la relación entre concurrencia y recuperación.
2
Control de la concurrencia.
3
1 Ejecución concurrente de transacciones: anomalías.
Sin embargo, como el acceso concurrente es una de las (buenas) características de la tecnología
de bases de datos (Tema 1), los SGBD deben permitir la ejecución concurrente (intercalada) de
transacciones y al mismo tiempo cumplir con la propiedad de aislamiento.
Para ello, los SGBD implementan protocolos que admiten la concurrencia, pero controlan que el
efecto de la ejecución intercalada de varias transacciones sea el mismo que el que se produciría
si las transacciones se ejecutaran de forma aislada, es decir, una a continuación de otra (en
serie).
4
1 Ejecución concurrente de transacciones: anomalías.
5
1 Ejecución concurrente de transacciones: anomalías.
Lectura sucia:
T1 T2
Cuentas
Nro.
leer(X) X.saldo=1.000
Saldo
X.saldo¬500
X 1 1.000 escribir(X) X.saldo=500
2 2.000 …
leer(X) X.saldo=500
… …
utiliza X.saldo
Fin
T1 y T2 Anulación
Cuentas
Nro. Saldo
X 1 1.000
2 2.000
… …
¿Cuál es el problema?
T2 lee un elemento de datos actualizado por T1 que todavía no ha finalizado, sus actualizaciones
no han sido confirmadas. La ejecución concurrente es correcta, cada transacción ve un único
estado de la base de datos. Se respeta la propiedad de aislamiento.
El problema surge cuando T1 es anulada (lo que es imprevisible): T2 ha leído un valor del
elemento de datos que nunca ha existido (ha sido anulado). Para corregir la anomalía, es decir,
el efecto indeseado de la lectura sucia de T2, ésta deberá ser anulada después de la anulación de
T1 (anulación en cascadas).
La forma de evitar la anomalía es permitir sólo planes concurrentes estrictos (punto 7), es decir,
planes en los que no se permita que una transacción lea un dato actualizado por otra transacción
hasta que ésta última se haya confirmado.
Es importante observar que, en la anulación en cascada, se puede anular una transacción que ya
ha sido confirmada.
Esta anomalía de la “lectura sucia” se considera más bien una seudoanomalía, si se permite la
lectura sucia se puede corregir su efecto indeseable, haciendo una anulación en cascada. Esta
anomalía se estudiará con más detalle en el punto 7 del tema.
6
1 Ejecución concurrente de transacciones: anomalías.
Lectura no repetible:
T1 T2
Cuentas
Nro.
leer(X) X.saldo=1.000
Saldo
leer(X) X.saldo=1.000
X 1 1.000 X.saldo¬500
2 2.000 escribir(X) X.saldo=500
Fin
… …
…
leer(X) X.saldo=500
T1 y T2 …
Fin
Cuentas
Nro. Saldo
X 1 500
2 2.000
… …
Error: T1 lee valores distintos para el mismo
tiempo elemento de datos
7
¿Cuál es el problema?
T2 actualiza un elemento de datos que ha sido leído por T1, que todavía no ha finalizado. El
problema surge cuando T1 vuelve a acceder (en lectura) al mismo elemento de datos y lee un
valor distinto.
7
1 Ejecución concurrente de transacciones: anomalías.
Lectura de fantasmas: T2
T1
Cuentas
Nro.
leer({Xi} / Xi.saldo >1.500)
Saldo
X1 1 1.000 leer(X1) X1.saldo=1.000
Cuentas
Nro. Saldo
Fin
X1 1 1.800
X2 2 2.000
X3 3 4.000
tiempo
Error: T1 lee conjuntos de tuplas distintos para la
misma condición 8
Esta anomalía podría verse como un caso específico de la lectura no repetible y para ilustrarla
con un ejemplo hay que considerar una lectura un poco distinta a las anteriores ya que tiene que
ver con el hecho de que una transacción solicita la lectura de las tuplas (registros) que cumplan
una determinada condición.
¿Cuál es el problema?
T1 (que sólo lee) no está haciendo sus lecturas en el mismo estado de la base de datos. Las dos
lecturas le proporcionan conjuntos distintos de valores.
8
1 Ejecución concurrente de transacciones: anomalías.
Pérdida de actualizaciones:
T1 T2
Cuentas
Nro.
leer(X) X.saldo=1.000
Saldo
leer(X) X.saldo=1.000
X 1 1.000 X.saldo¬X.saldo-100
2 2.000 X.saldo¬X.saldo-200
escribir(X) X.saldo=900
… …
escribir(X) X.saldo=800
Fin
T1 y T2 Fin
Cuentas
Nro. Saldo
X 1 800
2 2.000
… …
Error: se ha perdido la actualización de T1
tiempo
9
¿Cuál es el problema?
T1 actualiza un elemento de datos que ha sido leído por T2 que todavía no ha finalizado. El
problema surge cuando T2 vuelve a acceder al elemento de datos para actualizarlo
(actualización en función de su lectura), se pierde la actualización de T1.
Nota: en SQL la operación UPDATE con asignaciones SET donde aparecen referencias a columnas
en la parte derecha de las asignaciones, es realmente una lectura-escritura, que se realizan de
manera consecutiva. Es decir, en SQL la escritura (UPDATE) de T2, realmente sería una lectura (el
valor ya actualizado por T1) seguida de la actualización. Esto provoca que a veces pueda
pensarse que este problema no existe, cuando de hecho sí que se da.
9
Recuperación en bases de datos.
10
10
2 Control de la concurrencia en SQL.
11
Las distintas versiones de la instrucción SQL SET TRANSACTION permiten que el usuario, durante
su sesión de trabajo, pueda dar al SGBD directrices sobre su funcionamiento.
11
2 Control de la concurrencia en SQL.
12
12
2 Control de la concurrencia en SQL.
El lenguaje SQL propone cuatro niveles de control de la concurrencia. Los niveles son
gradualmente más exigentes en el control de la concurrencia, es decir, en las anomalías que no
se van a permitir, como se indica en la transparencia siguiente.
13
2 Control de la concurrencia en SQL.
Anomalía
Nivel de aislamiento Lectura sucia
Lectura no Lectura de Pérdida de
repetible fantasmas actualizaciones
READ UNCOMMITED SÍ SÍ SÍ SÍ
READ COMMITED NO SÍ SÍ SÍ
REPETIBLE READ NO NO SÍ SÍ
SERIALIZABLE NO NO NO NO
14
14
Control de la concurrencia.
15
15
3 Planes serializables por conflictos.
16
En este punto del tema, se va a intentar caracterizar los planes concurrentes que pueden ser
aceptados como buenos porque no presentan anomalías, es decir, porque son “equivalentes” a
un plan en serie para el mismo conjunto de transacciones.
16
3 Planes serializables por conflictos.
Para analizar qué planes concurrentes deben ser aceptados como buenos (sin anomalías), y, en
consecuencia, cómo se debe controlar la ejecución concurrente de transacciones, para aceptar
sólo esos planes, se van a hacer algunas definiciones previas que faciliten el estudio.
17
3 Planes serializables por conflictos.
18
3 Planes serializables por conflictos.
19
3 Planes serializables por conflictos.
20
3 Planes serializables por conflictos.
Lectura sucia:
r1(x), w1(x), r2(x), c2, a1
Lectura no repetible:
r1(x), r2(x), w2(x), c2, r1(x), c1
Pérdida de actualizaciones:
r1(x), r2(x), w1(x), w2(x), c1, c2
21
21
3 Planes serializables por conflictos.
Operaciones en conflicto:
En el análisis de los planes de ejecución concurrentes, lo primero que hay que hacer es
identificar la causa de las anomalías.
Analizando los ejemplos de las cuatro anomalías, se puede observar que, para que se produzca
una anomalía (una interferencia), las transacciones deben estar accediendo al mismo elemento
de datos y además, al menos una de ellas, debe estar actualizándolo. Si las transacciones sólo
leen, aunque sea el mismo elemento de datos, no pueden interferir entre sí, no puede haber
anomalías.
22
3 Planes serializables por conflictos. Ejemplo 1
Constantes: M=2 N=3
BD T1 T2
tiempo tiempo
23
En las transparencias siguientes, se presentan los dos planes en serie para el par de
transacciones y dos posibles planes de ejecución concurrente.
23
3 Planes serializables por conflictos. Ejemplo 1
Constantes: M=2 N=3
BD T1 T2 T1 T2
24
Es importante observar que planes en serie distintos, para el mismo conjunto de transacciones,
no tienen que producir el mismo estado de la base de datos.
En el ejemplo, el resultado de los dos planes en serie es el mismo porque las operaciones que se
ejecutan sobre el elemento de datos X son conmutativas. Si las operaciones sobre X de T1 y T2
fuesen una operación de suma y una operación de producto, el valor final de X en ambos planes
en serie no sería el mismo.
24
3 Planes serializables por conflictos. Ejemplo 1
Constantes: M=2 N=3
BD T1 T2 T1 T2
En el ejemplo, se observa:
25
3 Planes serializables por conflictos. Ejemplo 1
Constantes: M=2 N=3
BD T1 T2 T1 T2
26
3 Planes serializables por conflictos. Ejemplo 1
Constantes: M=2 N=3
BD T1 T2 T1 T2
El dibujo muestra que lo que es igual, en ambos planes, es la “radiografía” de las operaciones en
conflicto, en este caso, las operaciones sobre el elemento de datos X.
El plan D no es un plan en serie, pero en las operaciones en conflicto se comporta como el plan
en serie T1-T2. La concurrencia se produce en las operaciones que no entran en conflicto (sobre
el elemento de datos Y)
El ejemplo sugiere una idea para el control de la ejecución concurrente de transacciones: “la
intercalación de las operaciones en el plan se debe hacer de forma que, para cada par de
transacciones del plan, los pares de operaciones en conflicto deben incluir las operaciones de
ambas transacciones en el mismo orden, primero la operación de una de las transacciones y
después la de la otra transacción” (efecto similar al de un plan en serie para el mismo par de
transacciones).
Esta idea va a estar en el centro de todos los protocolos que se han desarrollado para controlar
la ejecución concurrente de transacciones.
27
3 Planes serializables por conflictos.
28
3 Planes serializables por conflictos.
29
De acuerdo a las ideas sugeridas en los ejemplos anteriores, el concepto de equivalencia entre
planes que interesa definir es el de equivalencia por conflictos.
Dos planes (para el mismo conjunto de transacciones) son equivalentes por conflictos, si el
orden de dos operaciones cualesquiera en conflicto es el mismo en ambos planes. El efecto
sobre los elementos de datos en conflicto es el mismo en ambos planes. En los pares de
operaciones que no están en conflicto, el orden de las operaciones no importa.
Respecto a los elementos de datos en conflicto, los dos planes son exactamente iguales.
Dos planes concurrentes pueden ser equivalentes por conflictos y no ser serializables, es decir
pueden presentar anomalías (no ser buenos).
En un plan serializable por conflictos, se van a poder intercalar en cualquier orden las
operaciones no conflictivas de las transacciones, pero las operaciones en conflicto se deberán
intercalar en el mismo orden que en un plan en serie para el mismo conjunto de transacciones.
29
3 Planes serializables por conflictos. Ejemplo 1
T1 T2 lo T1 T2
p or
2 n
leer(X) e a T es e leer(X)
d n la
X¬X-N rece racio de a X¬X-N
1 p p e ce
escribir(X)
A , T de o 1 pre escribir(X)
e r T
s e ri r p a d e
leer(Y) leer(X)
n Y¬Y+N i e ón X¬X+M
l a n e alqu raci
p u e
escribir(Y) escribir(X)
el ra c la op 2 En e
En e pa o, Fin eT p a r l p la n c Fin
t
q u n f lic ió n d leer(X) d
per e oper ncurre
oleer(Y) o
co erac deY¬Y+N a c i a ci nte
op
X¬X+M T2 ón de ones e D, pa
escribir(X) escribir(Y) T1 pr n con ra cu
ece a
Fin Fin de a flicto, lquier
la o l a
per
tiempo tiempo tiempo tiempo a c ió
n
30
3 Planes serializables por conflictos. Ejemplo 1
T1 T2
leer(X)
X¬X-N
leer(X)
X¬X+M
escribir(X)
leer(Y)
escribir(X)
Fin
Y¬Y+N
escribir(Y)
Fin
tiempo tiempo
31
3 Planes serializables por conflictos. Ejemplo 1
T1 T2 T1 T2
leer(X) leer(X)
X¬X-N X¬X-N
escribir(X) leer(X)
leer(Y) X¬X+M
Y¬Y+N escribir(X)
escribir(Y) leer(Y)
Fin escribir(X)
leer(X) Fin
X¬X+M Y¬Y+N
escribir(X) escribir(Y)
Fin Fin
tiempo tiempo tiempo tiempo
32
El efecto de este plan no es el mismo que el de la ejecución del plan en serie T1-T2.
32
3 Planes serializables por conflictos. Ejemplo 1
T1 T2 T1 T2
leer(X) leer(X)
X¬X+M X¬X-N
escribir(X) leer(X)
Fin X¬X+M
leer(X) escribir(X)
X¬X-N leer(Y)
escribir(X) escribir(X)
leer(Y) Fin
Y¬Y+N Y¬Y+N
escribir(Y) escribir(Y)
Fin Fin
tiempo tiempo tiempo tiempo
33
El efecto de este plan no es el mismo que el de la ejecución del plan en serie T2-T1.
33
3 Planes serializables por conflictos. Ejemplo 1
T1 T2
Como se puede observar, en el plan C, aparecen dos pares de operaciones en conflicto, en los
que el orden de las operaciones de ambas transacciones está invertido:
34
3 Planes serializables por conflictos.
35
35
3 Planes serializables por conflictos. Ejemplo 1
T1 T2 T1 T2
X X
Grafo para el plan A Grafo para el plan B
(plan en serie) (plan en serie)
T1 T2 T1 T2
X X
Grafo para el plan C Grafo para el plan D
(plan no serializable) (plan seriabilizable)
36
36
3 Planes serializables por conflictos.
T3 T3-T2-T1
37
37
3 Planes serializables por conflictos.
38
Control de la concurrencia.
Técnicas de control de la
PROTOCOLOS
concurrencia
39
Como se anunció al principio del tema, el objetivo del control de la ejecución concurrente de
transacciones, es poder intercalar las operaciones de transacciones distintas sin que se
produzcan anomalías (interferencias no deseables). Se trata de asegurar que la ejecución
concurrente respeta la propiedad de aislamiento, es decir, que el efecto final sea el mismo que
el que se obtendría si las transacciones se ejecutasen una a continuación de otra (en serie).
En el punto 3 del tema, se han caracterizado los planes concurrentes que pueden ser aceptados
como buenos porque no presentan anomalías, éstos son los planes serializables por conflictos,
es decir, planes que son equivalentes, en las operaciones en conflicto, a un plan en serie para el
mismo conjunto de transacciones.
Todos los protocolos (algoritmos) desarrollados para el control de la concurrencia en los SGBD
admiten sólo planes serializables por conflictos.
Los protocolos aseguran dinámicamente que el plan concurrente que se está ejecutando es un
plan serializable por conflictos, es decir, rechazan, durante la ejecución del plan, aquellas
transacciones (u operaciones) que puedan conducir a una efecto indeseado (anomalías).
39
Control de la concurrencia.
40
Planes completos: una vez finalizadas todas las transacciones, se analiza si el plan es serializable (por
conflictos), por ejemplo, usando el grafo de serialización. Si el plan es serializable se acepta, si no lo es se
rechazan todas las transacciones del plan.
Ejemplo: en el plan P: r1(x), r2(x), w1(x), w2(x), c1, c2, para las transacciones:
En un sistema real, en el que se inician transacciones continuamente, nunca se tiene un plan completo.
Para tener planes completos, se debería impedir, en un momento determinado, la entrada de nuevas
transacciones y esperar a que las transacciones activas finalizasen, antes de analizar el plan que se ha
producido.
Esto es inadmisible en un sistema real. Los usuarios podrían estar mucho tiempo en espera. En la práctica
los sistemas no analizan los planes completos.
Los protocolos, durante la ejecución de las transacciones, van analizando los potenciales conflictos para
evitarlos, rechazando sólo la transacción que entra en conflicto con las otras transacciones que se están
ejecutando concurrentemente.
Por ejemplo en el plan anterior P, el sistema, ante la petición w1(X), detecta una potencial anomalía (par
de operaciones en conflicto) y debe actuar de alguna manera:
Los sistemas previenen las anomalías sin llegar a comprobar que se han producido: política conservadora.
40
Control de la concurrencia.
Bloqueo de elementos de
datos
Técnicas multiversión
41
Los SGBD comerciales implementan en sus protocolos ideas de una o varias de estas estrategias.
41
Control de la concurrencia.
42
42
4 Protocolos de bloqueo.
Bloqueo de elementos de
datos
Técnicas multiversión
43
43
4 Protocolos de bloqueo.
Aparentemente, esta estrategia impide la concurrencia, pero las reglas del bloqueo aceptarán o
prohibirán el acceso al mismo elemento de datos, según el tipo de operación solicitada (lectura o
escritura).
Existen distintos tipos de protocolos de bloqueo. Uno de los más populares es el protocolo de
lectura/escritura que es el que se presenta a continuación.
44
4 Protocolos de bloqueo.
Al final de este punto del tema, se presentan los algoritmos para las operaciones:
bloquear_lectura, bloquear_escritura, desbloquear.
45
4 Protocolos de bloqueo.
46
4 Protocolos de bloqueo. Ejemplo 2
BD
T1 T2
X=20
leer(Y) leer(X)
Y=30
leer(X) leer(Y)
X¬X+Y Y¬X+Y
escribir(X) escribir(Y)
T1-T2 T2-T1 Fin Fin
BD BD
47
Es interesante observar que los dos planes en serie para estas dos transacciones no producen el
mismo estado de la base de datos.
47
4 Protocolos de bloqueo. Ejemplo 2
Plan concurrente para T1 y T2
BD
T1 T2
X=20
leer(Y)
Y=30
leer(X)
leer(X)
leer(Y)
Anomalía de la
X¬X+Y pérdida de
escribir(X) actualizaciones
Y¬X+Y
BD escribir(Y)
Fin
X=50 Fin
X
Y=50
tiempo tiempo
T1 T2
Y
Grafo de serialización (plan no
serializable) 48
En el plan concurrente que se presenta para T1 y T2, ¿qué anomalía se produce?: la “pérdida de
actualizaciones”, cada transacción pierde las actualizaciones que la otra transacción hace.
48
4 Protocolos de bloqueo. Ejemplo 2
Plan concurrente para T1 y T2
BD
T1 T2
X=20
leer(Y)
Y=30
leer(X)
leer(X)
leer(Y)
Anomalía de la
X¬X+Y pérdida de
escribir(X) actualizaciones
Y¬X+Y
BD escribir(Y)
Fin
X=50 Fin
X
Y=50
tiempo tiempo
T1 T2
Y
Grafo de serialización (plan no
serializable) 49
49
4 Protocolos de bloqueo. Ejemplo 2
Plan concurrente para T1 y T2: con bloqueo L/E
T1 T2
BD
bloquear_lectura(Y) Anomalía de la
X=20 leer(Y) pérdida de
Y=30 desbloquear(Y) actualizaciones
bloquear_lectura(X)
leer(X)
desbloquear(X)
bloquear_escritura(X)
leer(X)
bloquear_escritura(Y)
BD leer(Y)
X¬X+Y
X=50 escribir(X)
desbloquear(X)
Y=50
Y¬X+Y
X
escribir(Y)
Fin desbloquear(Y) T1 T2
Fin Y
tiempo tiempo
Grafo de serialización (plan no
50
serializable)
Se puede observar que el nuevo plan concurrente sigue presentando la anomalía de la “pérdida
de actualizaciones”, no es serializable por conflictos. ¿Dónde está el problema?
50
4 Protocolos de bloqueo. Ejemplo 2
Plan concurrente para T1 y T2: con bloqueo L/E
T1 T2
BD
bloquear_lectura(Y) Anomalía de la
X=20 leer(Y) pérdida de
Y=30 desbloquear(Y) actualizaciones
bloquear_lectura(X)
leer(X)
desbloquear(X)
bloquear_escritura(X)
leer(X)
bloquear_escritura(Y)
ElBDproblema del plan concurrente es que T2 ha
leer(Y)
X¬X+Y
desbloqueado demasiado pronto el elemento de datos X
X=50 escribir(X)
que iba a usar posteriormente. Entre el intermedio de
desbloquear(X)
Y=50
ambas operaciones T1 ha actualizado Y¬X+YX. X
escribir(Y)
Fin desbloquear(Y) T1 T2
Fin Y
tiempo tiempo
Grafo de serialización (plan no
51
serializable)
Las operaciones de bloqueo de las transacciones deben estar limitadas por alguna restricción
adicional que evite este problema.
51
4 Protocolos de bloqueo. Ejemplo 2
Plan concurrente para T1 y T2: con bloqueo L/E
T1 T2
BD
bloquear_lectura(Y) Anomalía de la
X=20 leer(Y) pérdida de
Y=30 desbloquear(Y) actualizaciones
bloquear_lectura(X)
leer(X)
desbloquear(X)
bloquear_escritura(X)
leer(X)
bloquear_escritura(Y)
El protocolo de bloqueo de lectura/escritura
BD leer(Y)
no garantiza
la seriabilidad:
X¬X+Y siempre se podría bloquear antes de cada
operación
X=50 y desbloquear después de la operación
escribir(X)
desbloquear(X)
(cualquier plan concurrente seríaY¬X+Y
Y=50 posible). X
escribir(Y)
Fin desbloquear(Y) T1 T2
Fin Y
tiempo tiempo
Grafo de serialización (plan no
52
serializable)
Las operaciones de bloqueo de las transacciones deben estar limitadas por alguna restricción
adicional que evite este problema.
52
4 Protocolos de bloqueo.
53
Regla 2F: cuando una transacción desbloquea algún elemento de datos ya no puede emitir
ninguna operación de bloqueo.
53
4 Protocolos de bloqueo.
54
Si se completa un plan, controlado por el protocolo B2F, se garantiza que el plan es serializable
por conflictos, si no se completa es porque el plan se ha quedado en situación de bloqueo
mortal, el protocolo deberá resolver esta situación, pero habrá evitado una posible anomalía.
54
4 Protocolos de bloqueo. Ejemplo 2
T’1 T’2
bloquear_lectura(Y) bloquear_lectura(X)
leer(Y) leer(X)
bloquear_escritura(X) bloquear_escritura(Y)
desbloquear(Y) desbloquear(X)
leer(X) leer(Y)
X¬X+Y Y¬X+Y
escribir(X) escribir(Y)
desbloquear(X) desbloquear(Y)
Fin Fin
tiempo tiempo
55
¿Cómo podemos intercalar las operaciones de estas dos transacciones que cumplen la regla 2F?:
respetando las reglas del bloqueo de lectura/escritura.
55
4 Protocolos de bloqueo. Ejemplo 2
Plan concurrente para T’1 y T’2 (con B2F)
T’1 T’2
bloquear_lectura(Y)
leer(Y)
bloquear_lectura(X)
leer(X)
bloquear_escritura(X) espera
bloquear_escritura(Y) espera
tiempo tiempo
ü El SGBD evita la anomalía.
ü El plan no es posible: no se puede atender a ninguna de las dos
transacciones porque la operación solicitada por ambas (bloqueo) no
está permitida por las reglas del bloqueo B2F.
ü Estrategia conservadora.
56
En la transparencia, se muestra un plan concurrente para T’1 y T’2, controlado por el protocolo
B2F. Se observa que sólo se pueden intercalar las dos primeras operaciones de ambas
transacciones, al intentar ejecutar la segunda operación de cualquiera de ellas se entra en la
situación de bloqueo mortal, las dos transacciones se quedan en espera. El protocolo B2F ha
evitado la anomalía.
Obsérvese que el protocolo deja en espera a T’1, sin saber todavía qué va a hacer T’2, es decir,
sin saber si va a producirse una anomalía,.
El protocolo B2F evita que en el plan aparezca un primer par de operaciones en conflicto. ¡Pero
las operaciones en conflicto no siempre generan anomalías!
Los sistemas previenen las anomalías sin llegar a comprobar que se han producido: política
conservadora.
56
4 Protocolos de bloqueo. Ejemplo 2
Plan concurrente para T’1 y T’2 (con B2F)
T’1 T’2
bloquear_lectura(X)
leer(X)
bloquear_lectura(Y)
leer(Y)
bloquear_escritura(Y) espera
bloquear_escritura(X) espera
tiempo tiempo
57
57
4 Protocolos de bloqueo. Ejemplo 2
Plan concurrente para T’1 y T’2 (con B2F)
T’1 T’2
bloquear_lectura(X)
leer(X)
bloquear_lectura(Y)
leer(Y)
bloquear_escritura(Y) espera
bloquear_escritura(X) espera
tiempo tiempo
58
Obviamente, el protocolo B2F debe incluir una regla adicional para resolver las situaciones de
bloqueo mortal.
Existen numerosas soluciones a esta situación. Más adelante, se presentará una de ellas.
58
4 Protocolos de bloqueo. Ejemplo 1
Constantes: M=2 N=3
BD T1 T2
tiempo tiempo
59
59
4 Protocolos de bloqueo. Ejemplo 1
Constantes: M=2 N=3
BD T1 T2 T1 T2
60
60
4 Protocolos de bloqueo. Ejemplo 1
B2F
T1 T2 T1 T2
leer(X) bloquear_lectura(X)
X¬X-N leer(X)
leer(X) X¬X-N
X¬X+M bloquear_lectura(X)
escribir(X) leer(X)
leer(Y) X¬X+M
escribir(X) promoción_bloqueo(X)
Fin espera
Y¬Y+N promoción_bloqueo(X)
escribir(Y) espera
Fin
tiempo tiempo tiempo tiempo
61
El plan concurrente C está prohibido por el protocolo B2F. Las reglas de bloqueo dejan en espera
a las dos transacciones, el protocolo evita la anomalía de la “pérdida de actualizaciones”, y
conduce a una situación de bloqueo mortal.
61
4 Protocolos de bloqueo. Ejemplo 1
B2F
T1 T2 T1 T2
leer(X) bloquear_escritura(X)
X¬X-N leer(X)
escribir(X) X¬X-N
leer(X) escribir(X)
X¬X+M bloquear_escritura(Y)
escribir(X) desbloquear(X)
Fin bloquear_escritura (X)
leer(Y) leer(X)
Y¬Y+N X¬X+M
escribir(Y) escribir(X)
Fin desbloquear(X)
Fin
tiempo tiempo
leer(Y)
Y¬Y+N
D: Plan concurrente para T1 y T2 escribir(Y)
(es posible con B2F) desbloquear(Y)
Fin
tiempo tiempo 62
En el plan D, se produce la anomalía de la “lectura sucia”, pero, como ya se ha dicho, ésta es una
seudoanomalía que se estudiará más adelante (punto 7).
62
4 Protocolos de bloqueo.
63
En los SGBD comerciales, se pueden ofrecer operadores de bloqueo para casos especiales, pero
también se trabaja con bloqueo implícito.
El bloqueo implícito reduce la concurrencia, ya que impide que una transacción libere sus
bloqueos antes de finalizar, pero facilita la escritura de transacciones.
63
4 Protocolos de bloqueo. Ejemplo 1
B2F Implícito
T1 T2 T1 T2
64
64
4 Protocolos de bloqueo. Ejemplo 1
B2F Implícito
T1 T2 T1 T2
Bloqueo implícito
leer(X) leer(X) de lectura
X¬X-N X¬X-N
Promoción del
escribir(X) escribir(X) bloqueo
leer(X) leer(X) espera
Bloqueo implícito
X¬X+M leer(Y) de lectura
escribir(X) Y¬Y+N
Fin escribir(Y) Promoción del
bloqueo
leer(Y) Fin
Y¬Y+N Desbloqueo
Bloqueo implícito
implícito
escribir(Y) leer(X) de lectura
Fin X¬X+M
escribir(X) Promoción del
tiempo tiempo bloqueo
Fin
Desbloqueo
implícito
D: Plan concurrente para T1 y T2
(no es posible con B2F implícito)
tiempo tiempo 65
Con B2F Implícito, el plan D no está permitido. La aplicación de las reglas de bloqueo (implícito)
conduce al plan en serie A (T1-T2).
65
4 Protocolos de bloqueo. Ejemplo 1
X Y B2F
T1 T2 BL BE DB BL BE DB
leer(X) T1
X¬X-N
escribir(X) T1
leer(X) T2 espera
leer(Y) T1
Y¬Y+N
escribir(Y) T1
Fin [T1] [T1]
leer(X) T2
X¬X+M
escribir(X) T2
Fin [T2]
Información sobre
D: Plan concurrente para T1 y T2 (no es posible bloqueos almacenada por
el SGBD para aplicar el
tiempo con B2F implícito) à plan en serie T1-T2
protocolo B2F
66
En la transparencia:
• DB: Desbloqueo
Por ello, para poder aplicar los protocolos, los SGBD guardan toda la información, relevante para
el protocolo, que se va producido durante la ejecución del plan, sin necesidad de guardar el plan
completo.
En el protocolo B2F, la única información, que el SGBD necesita para aplicar las reglas de
bloqueo, es el estado de bloqueo de los elementos de datos accedidos por las transacciones del
plan.
66
4 Protocolos de bloqueo.
67
Por lo tanto, todo protocolo de bloqueo debe incorporar una regla adicional para resolver estas
situaciones.
67
4 Protocolos de bloqueo. Ejemplo 2
Plan concurrente para T’1 y T’2 con bloqueo mortal B2F Explícito
T’1 T’2
bloquear_lectura(Y)
leer(Y)
bloquear_lectura(X)
leer(X)
bloquear_escritura(X) espera
bloquear_escritura(Y) espera
desbloquear(Y) desbloquear(X)
leer(X) leer(Y)
X¬X+Y Y¬Y+X Bloqueo
escribir(X) escribir(Y) Mortal
desbloquear(X) desbloquear(Y)
Fin Fin
tiempo tiempo 68
68
4 Protocolos de bloqueo. Ejemplo 2
Plan concurrente para T’1 y T’2 con bloqueo mortal B2F Implícito
T’1 T’2
Bloqueo implícito
leer(Y) de lectura Bloqueo implícito
leer(X) de lectura
leer(X) Bloqueo implícito
de lectura Bloqueo implícito
leer(Y) de lectura
X¬X+Y
Y¬Y+X
escribir(X) espera
escribir(Y) espera
Bloqueo
Fin c Fin c Mortal
tiempo tiempo 69
69
4 Protocolos de bloqueo.
En esta técnica de detección del bloqueo mortal, el sistema debe mantener el grafo de espera.
Además, el sistema debe tener un criterio para decidir cuándo verifica si el grafo tiene un ciclo.
Un criterio podría ser considerar el número de transacciones que están esperando bloquear un
elemento de datos, durante un tiempo mayor que un tiempo fijado por el sistema. Otro criterio
podría ser verificar el grafo cada vez que se modifica.
70
4 Protocolos de bloqueo. Ejemplo 2
Plan concurrente para T’1 y T’2 con bloqueo mortal B2F Explícito
T’1 T’2
bloquear_lectura(Y)
leer(Y)
bloquear_lectura(X)
leer(X)
bloquear_escritura(X)
bloquear_escritura(Y)
Bloqueo
desbloquear(Y) desbloquear(X)
leer(X) leer(Y)
Mortal
X¬X+Y Y¬Y+X
escribir(X) escribir(Y)
desbloquear(X) desbloquear(Y)
Fin Fin
Grafo de
Se debe abortar T’1 o T’2 T’1 espera T’2
tiempo tiempo 71
71
4 Protocolos de bloqueo.
Operaciones para usar bloqueo de Lectura/Escritura:
Bloquear_escritura (X):
B: IF bloqueo(X)=‘desbloqueado’ (el elemento está desbloqueado)
THEN bloqueo(X) ¬ ‘bloqueado para escritura’
añadir T a la lista de transacciones del elemento X
ELSE WAIT (hasta que bloqueo(X)=‘desbloqueado’ y el
gestor de bloqueos considere a T)
GOTO B
END IF.
72
72
4 Protocolos de bloqueo.
Operaciones para usar bloqueo de Lectura/Escritura:
Bloquear_lectura (X):
B: IF bloqueo(X) = ‘desbloqueado’ (el elemento está desbloqueado)
THEN bloqueo(X) ¬ ‘bloqueado para lectura’
nro_lecturas ¬ 1
añadir T a la lista de transacciones del elemento X
ELSE
IF bloqueo(X) = ‘bloqueado para lectura’
THEN nro_lecturas ¬ nro_lecturas + 1
añadir T a la lista de transacciones del
elemento X
ELSE WAIT (hasta que bloqueo(X) = ‘desbloqueado’ y el
gestor de bloqueos considere a T)
GOTO B
END IF
END IF.
73
73
4 Protocolos de bloqueo.
Operaciones para usar bloqueo de Lectura/Escritura:
Desbloquear (X):
IF bloqueo(X)=‘bloqueado para escritura’
THEN bloqueo(X) ¬ ‘desbloqueado’
eliminar T de la lista de transacciones del elemento X
--considerar alguna transacción que espera para bloquear X--
ELSE
IF bloqueo(X) = ‘bloqueado para lectura’
THEN nro_lecturas ¬ nro_lecturas – 1
eliminar T de la lista de transacciones del elemento X
IF nro_lecturas=0
THEN bloqueo(X) ¬ ‘desbloqueado’
-- considerar alguna transacción que espera para
bloquear X --
END IF
END IF
END IF 74
74
4 Protocolos de bloqueo.
Información de bloqueo de elementos de datos: dos opciones
75
Control de la concurrencia.
76
76
5 Protocolos de ordenamiento por marcas de tiempo.
Bloqueo de elementos de
datos
Técnicas multiversión
77
77
5 Protocolos de ordenamiento por marcas de tiempo.
78
Los protocolos de ordenamiento por marcas de tiempo (OMT) sólo admiten planes concurrentes
que sean equivalentes por conflictos al plan en serie en el que las transacciones se ejecutan en el
orden en que se inician en el sistema (plan en serie cronológico).
Para alcanzar este objetivo, los protocolos controlan, dinámicamente, el orden de ejecución de
las operaciones en conflicto, dentro del plan, usando para ello las marcas de tiempo de las
transacciones a las que pertenecen dichas operaciones.
78
5 Protocolos de ordenamiento por marcas de tiempo.
79
5 Protocolos de ordenamiento por marcas de tiempo.
80
Para que un plan concurrente pueda ser admitido según este protocolo, no puede ser
equivalente por conflictos a cualquier plan en serie sino sólo a uno, a su plan en serie
cronológico.
Por ello, cuando aparece un par de operaciones en conflicto en el plan, el protocolo exige que la
primera operación del par sea la de la transacción más vieja (con marca de tiempo menor).
80