Está en la página 1de 90

Capítulo 10

Control de Concurrencia – Parte 1


Implementación del Aislamiento

 Meta: Las planificaciones concurrentes deben ser:


 Para la consistencia de la BD: secuenciables por vistas o por
conflictos, y recuperables.
 Para eficiencia: preferiblemente sin cascadas.
Implementación del Aislamiento
 Situación: Hasta aquí el programador solo sabe:
 proponer planificaciones, chequear secuencialidad por vistas o por
conflictos, y
 seguir ciertas reglas para garantizar recuperabilidad o ausencia de
cascadas.
 ¿Qué desventajas ven con esta manera de trabajar?
Implementación del Aislamiento
 Situación: Hasta aquí el programador solo sabe:
 proponer planificaciones, chequear secuencialidad por vistas o por
conflictos, y
 seguir ciertas reglas para garantizar recuperabilidad o ausencia de
cascadas.
 Consecuencias: Esto es muy ineficiente y los clientes
quedan insatisfechos:
 Si el programador propone una planificación errada va a tener que
proponer una nueva.
 En el chequeo de secuencialidad por vistas hay que probar con las
distintas secuencias.
 Son n! secuencias con n número de transacciones.
Implementación del Aislamiento

 Problema: Es necesario reducir sustancialmente el trabajo del


programador y aumentar su eficiencia.
 Solución: Usar protocolos de control de concurrencia.
 Protocolos de control de concurrencia fijan ciertas reglas a
respetar que aseguran que las planificaciones que las respetan
son secuenciables por conflictos/vistas.
 Los mismos hacen un balance entre la cantidad de concurrencia
que permiten y la cantidad de sobrecarga en la que incurren.
 Algunos protocolos de control de concurrencia garantizan
recuperabilidad y/o ausencia de cascadas.
Implementación del Aislamiento

 ¿Qué ventajas tiene el trabajar con protocolos de


control de concurrencia?
Implementación del Aislamiento

 Consecuencias de usar protocolos de control de


concurrencia:
 Los programadores pueden construir rápidamente una
planificación respetando un protocolo de control de
concurrencia.
 Por lo tanto, no necesitan hacer varios intentos antes de
obtener una planificación secuenciable, y
 tampoco necesitan verificar secuencialidad de la planificación
propuesta.
 Incluso veremos que hay protocolos para los que la
planificación se puede generar automáticamente.
Implementación del Aislamiento

 Objetivo: desarrollar protocolos de control de


concurrencia que van a asegurar secuencialidad.
 Estos protocolos van a imponer una disciplina que evita
planificaciones no secuenciables.
Protocolos de Control de Concurrencia
Organización del capítulo:
 Estudiaremos dos tipos de protocolos de control de
concurrencia:
 Aquellos basados en el uso bloqueos (a tratar en esta parte)
 Aquellos basados en el uso de marcas temporales (a estudiar
en la segunda parte).
 Dividimos la parte de protocolos basados en bloqueos en dos
módulos:
 Manejo de bloqueos.
 Aquí veremos conceptos básicos y problemas relacionados
con uso de bloqueos.
 Protocolos específicos basados en bloqueos.
Manejo de Bloqueos: Conceptos
 Un bloqueo es un mecanismo para controlar acceso
concurrente a un ítem de datos.
 Cuando hacemos control de concurrencia basado en
bloqueos vamos a tener varios modos de bloqueo,
 cada uno con un distinto significado en lo que respecta a lo que
una transacción puede hacer cuando tiene un bloqueo (sobre
un elemento de datos) en el modo.
 La liberación de un bloqueo se solicita usando la instrucción
unlock (o u).
 Los pedidos de bloqueos (en un determinado modo) son
hechos al gestor de control de concurrencia.
Manejos de Bloqueos: Conceptos

 Ejemplo: Los ítems de datos pueden estar bloqueados en


dos modos:
1. Exclusivo (X). El ítem de datos puede ser tanto leído como escrito.
 Un bloqueo X es solicitado usando la instrucción lock-X (o lx).
2. Compartido (S). Un ítem de datos puede ser solo leído.
 Un bloqueo S es solicitado usando la instrucción lock-S (o ls).
Manejos de Bloqueos: Conceptos

 Problema: ¿Cómo decidir si a una transacción se le puede


otorgar un bloqueo que acaba de solicitar?
 Esa decisión depende de los bloqueos sobre el mismo
elemento de datos que tienen las demás transacciones.
 El bloqueo que se solicita sobre un elemento de datos puede
ser compatible/incompatible con los bloqueos que poseen
las demás transacciones.
Manejos de Bloqueos: Conceptos

 Solución: Usar matriz de compatibilidad de bloqueos.


 Una matriz de compatibilidad de bloqueos es una matriz
cuyas filas y columnas representan modos de bloqueos.
 Una celda de la matriz va a tener un valor de verdad indicando
si los dos modos son compatibles o no,
 o sea, si puede haber o no dos transacciones distintas al
mismo tiempo con bloqueos en esos modos.
 Regla general a respetarse: A una transacción se le puede
otorgar un bloqueo en un ítem si el bloqueo solicitado es
compatible con los bloqueos que tienen en el ítem las otras
transacciones.
Manejos de Bloqueos: Conceptos

 Ejemplo: Sea la matriz de compatibilidad de bloqueos:

 Cualquier número de transacciones puede tener bloqueos


compartidos en un ítem.
 Si una transacción tiene un bloqueo exclusivo en el ítem
ninguna otra transacción puede tener un bloqueo en el ítem.
Manejos de Bloqueos: Conceptos

 La transacción puede proceder solo después que la


solicitud de bloqueo es aceptada.
 ¿Qué pasa si un bloqueo no puede ser otorgado?
Manejos de Bloqueos: Conceptos

 La transacción puede proceder solo después que la


solicitud de bloqueo es aceptada.
 ¿Qué pasa si un bloqueo no puede ser otorgado?
 La transacción solicitante tendrá que esperar hasta
que todos los bloqueos incompatibles poseídos por
otras transacciones hayan sido liberados.
 Luego, el bloqueo es otorgado.
Problemas al trabajar con bloqueos
 Ahora consideraremos diversos problemas que surgen al
trabajar con bloqueos.
 Ejemplo: de una transacción que usa instrucciones de
bloqueo:
T2: lock-S(A);
read (A);
unlock(A);
lock-S(B);
read (B);
unlock(B);
display(A+B)

 ¿Qué pasa si A y B son actualizados entre las lecturas de A


y B?
Problemas al trabajar con bloqueos
 Ahora consideraremos diversos problemas que surgen al
trabajar con bloqueos.
 Ejemplo: de una transacción que usa instrucciones de
bloqueo:
T2: lock-S(A);
read (A);
unlock(A);
lock-S(B);
read (B);
unlock(B);
display(A+B)

 Observación: El usar bloqueos como arriba no es suficiente


para garantizar secuencialidad.
 si A y B son actualizados entre las lecturas de A y B, la suma
mostrada va a ser incorrecta.
Problemas al trabajar con bloqueos

 ¿Cuál es el mensaje del ejemplo anterior y a qué problema


lleva?
Problemas al trabajar con bloqueos

 Mensaje: Si no se tiene cuidado con el orden en que se


pueden solicitar y liberar bloqueos en una transacción,
 debido a la concurrencia de transacciones, la transacción
puede mostrar información incorrecta.
 Problema: Controlar el orden del pedido y liberación de
bloqueos para evitar la situación anterior.
Problemas al trabajar con bloqueos

 Solución: Definir protocolos basados en bloqueos.


 Un protocolo basado en bloqueos es un conjunto de reglas
seguidas por todas las transacciones mientras piden y liberan
bloqueos.
 Los protocolos basados en bloqueos restringen el conjunto de
posibles planificaciones.
Problemas al trabajar con bloqueos
 Ejemplo: Considere la planificación parcial:

 NiT3 ni T4 pueden progresar— ejecutar lock-S(B) causa que T4 espere


que T3 libere su bloqueo en B, mientras que ejecutar lock-X(A) causa
que T3 espere queT4 libere su bloqueo en A.
 A tal situación se le llama interbloqueo (deadlock).
 ¿Cómo manejar este inberbloqueo?
Problemas al trabajar con bloqueos
 Ejemplo: Considere la planificación parcial:

 NiT3 ni T4 pueden progresar— ejecutar lock-S(B) causa que T4 espere


que T3 libere su bloqueo en B, mientras que ejecutar lock-X(A) causa
que T3 espere queT4 libere su bloqueo en A.
 A tal situación se le llama interbloqueo (deadlock).
 Para manejar un interbloqueo una de las dos, T3 o T4 debe ser
retrocedida y sus bloqueos liberados.
 ¿Cómo manejar un interbloqueo en general?
Problemas al trabajar con bloqueos

 Mensaje: En planificaciones basadas en bloqueos pueden


ocurrir interbloqueos.
 El potencial para interbloqueos existe en la mayoría de los
protocolos de bloqueos.
 Los interbloqueos son un mal necesario.
 Por lo tanto es necesario considerar el manejo de
interbloqueos.
Problemas al trabajar con bloqueos

 Situación 1: Una transacción puede estar esperando por un


X-lock en un item, mientras que una secuencia de otras
transacciones solicitan y se les concede un S-lock en el
mismo item.
 Situación 2: La misma transacción es retrocedida
repetidamente debido a interbloqueos.
 Los anteriores son ejemplos de inanición de una
transacción.
 Mensaje: la Inanición es posible bajo ciertas circunstancias.
 ¿Por qué debemos preocuparnos por la inanición?
Problemas al trabajar con bloqueos

 Situación 1: Una transacción puede estar esperando por un


X-lock en un item, mientras que una secuencia de otras
transacciones solicitan y se les concede un S-lock en el
mismo item.
 Situación 2: La misma transacción es retrocedida
repetidamente debido a interbloqueos.
 Los anteriores son ejemplos de inanición de una
transacción.
 Mensaje: la Inanición es posible bajo ciertas circunstancias.
 ¿Por qué debemos preocuparnos por la inanición?
 Evitar que los usuarios queden insatisfechos por no tener
sus pedidos de transacción terminados en un tiempo
razonable.
Problemas al trabajar con bloqueos

• Problema: ¿Cómo se puede evitar la inanición de


transacciones al conceder los bloqueos?
• Solución: El gestor de control de concurrencia puede ser
diseñado para evitar inanición.
 ¿Cuando una transacción Ti solicita un bloqueo sobre un
elemento de datos Q en un modo M, qué puede hacer el
gestor de concurrencia para evitar inanición?
Problemas al trabajar con bloqueos

• Problema: ¿Cómo se puede evitar la inanición de


transacciones al conceder los bloqueos?
• Solución: El gestor de control de concurrencia puede ser
diseñado para evitar inanición.
 Cuando una transacción Ti solicita un bloqueo sobre un
elemento de datos Q en un modo M, el gestor de control de
concurrencia concede el bloqueo siempre que:
1. No exista otra transacción que posea un bloqueo sobre Q en un
modo que esté en conflicto con M.
2. No exista otra transacción que esté esperando un bloqueo sobre
Q y que lo haya solicitado antes que Ti.
Protocolos Basados en Bloqueos: Conceptos

• Definición: Se dice que una planificación P es legal bajo un


protocolo de bloqueo dado
 si P es una planificación posible para un conjunto de
transacciones que sigan las reglas del protocolo de bloqueo.
• Definición: Se dice que un protocolo asegura la
secuencialidad por conflictos si y solo si
 todas la planificaciones legales son secuenciables por
conflictos.
Protocolo de Bloqueo de Dos Fases

 El protocolo de bloqueo de dos fases es un protocolo que


asegura planificaciones secuenciables por conflictos.
 Fase de crecimiento
 Las transacciones pueden obtener bloqueos
 Las transacciones no pueden liberar bloqueos
 Fase de decrecimiento
 Las transacciones pueden liberar bloqueos
 Las transacciones no pueden obtener bloqueos
Protocolo de Bloqueo de Dos Fases

 Evaluación: El protocolo de bloqueo de dos fases asegura


secuencialidad por conflictos.
 O sea, que la planificación es equivalente por
conflictos a la secuencia de las transacciones en el
orden de sus puntos de bloqueo
 i.e. el punto donde una transacción adquiere su
bloqueo final en la planificación.
Protocolo de Bloqueo de Dos Fases

• Sean las siguientes transacciones:


T1 : r(A);w(A); r(B);w(B).
T2 : w(A);r(A); w(B);r(B).

• Agregarles instrucciones de bloqueo de modo que se


cumpla el protocolo de bloqueo de dos fases.
Protocolo de Bloqueo de Dos Fases

• Las siguientes transacciones obedecen el protocolo de


bloqueos de dos fases:
T1 : lx (A); r(A);w(A); lx (B); u(A); r(B);w(B); u(B).
T2 : lx (A); w(A);r(A); lx (B); u(A); w(B);r(B); u(B).

• Usando estas transacciones la siguiente planificación es legal


con relación al protocolo de bloqueos de dos fases:
Protocolo de Bloqueo de Dos Fases
Paso T1 T2

1 lx (A)

2 r(A)

3 w(A)

4 lx (B)

5 u(A)

6 lx (A)

7 w(A)

8 r(A)

9 lx (B) denied

10 r(B)

11 w(B)

12 u(B)

13 lx (B)

14 u(A)

15 w(B)

16 r(B)

17 u(B)
Protocolo de Bloqueo de Dos Fases

Teorema: Sea P una planificación legal bajo el protocolo de


bloqueo de dos fases. Entonces: P es sequenciable por
conflictos y se pueden ordenar las transacciones de P según sus
puntos de bloqueo.
Prueba: Para la primera parte hacemos la prueba por inducción
en el número n de transacciones que intervienen en P. Si n = 1
no hay nada que hacer, pues P ya es sequenciable por
conflictos.
Supongamos que P involucra n transacciones T1, T2, …, Tn, y sea
Ti la transacción con el primer punto de bloqueo en la
planificación P.
Protocolo de Bloqueo de Dos Fases

Afirmamos que es posible mover todas las acciones de lectura


y escritura de Ti adelante, al comienzo de P sin pasar por
ningún conflicto.
Consideremos alguna acción de Ti , digamos wi(Y ). Si la misma
estuviera precedida en P por una acción conflictiva wj(Y ),
entonces en P acciones lxj(Y ), uj(Y ) y lxi(Y ) deben intervenir,
en una secuencia de acciones:
…lxj(Y ); …wj(Y ); …uj(Y ); …lxi(Y ); …wi(Y ); …
Como P es legal por el protocolo de bloqueo de dos fases, el
último bloqueo de Ti ocurre antes que uj(Y ) que ocurre antes
que el último bloqueo de Ti. Entonces el punto de bloqueo de
Ti ocurre antes que el punto de bloqueo de Ti , lo cual es una
contradicción.
Protocolo de Bloqueo de Dos Fases

Hemos probado que no pueden existir pares de escrituras


conflictivas; el mismo argumento se aplica para todo par de
acciones potencialmente conflictivas, una de Ti y otra de algún
otro Tj.
Concluimos que es posible mover todas las acciones de Ti
adelante al comienzo de P usando intercambios de acciones de
lectura y escritura no conflictivas, seguidas por la restauración de
acciones bloquear y desbloquear de Ti. Entonces P es equivalente
por conflictos a una planificación de la forma:
(acciones de Ti) Q ,
donde Q = acciones de las otras n-1 transacciones. Q es legal bajo
el protocolo de bloqueo de dos fases, entonces la hipótesis
inductiva es aplicable a Q.
Protocolo de Bloqueo de Dos Fases

Entonces Q es equivalente por conflictos a una planificación


secuencial Q’ donde las transacciones de Q están ordenadas según
sus puntos de bloqueo. Por lo tanto P es equivalente por conflictos
a
(acciones de Ti ) Q'.
Así las transacciones de P están ordenadas según sus puntos de
bloqueo.
Q.E.D.
Protocolo de Bloqueo de Dos Fases

 ¿Qué sucede en este ejemplo y qué mensaje pueden


sacar de él?
Protocolo de Bloqueo de Dos Fases

 Mensaje: El protocolo de bloqueos de dos fases no


asegura la ausencia de interbloqueos.
 ¿Cómo manejar interbloqueos?
Protocolo de Bloqueo de Dos Fases
 Los retrocesos en cascada son posibles bajo el protocolo
de bloqueos de dos fases.
T1 T2 T3
L-x(A)

Ejemplo de L-s(B)
Read(A)
planificación que
Read(B)
respeta protocolo
Write(A)
de bloqueo de dos
U(A)
fases que requiere L-x(A)
retroceso en Read(A)
cascada Write(A)
U(A)
L-s(A)
Read(A)
abort
Protocolo de Bloqueo de Dos Fases

 Tener que hacer retrocesos en cascada es costoso.


 Problema: ¿Cómo se pueden evitar los retrocesos en
cascada?
 Solución 1: Seguir un protocolo modificado llamado
bloqueo de dos fases estricto:
 una transacción debe mantener todos sus bloqueos exclusivos
hasta que se comprometa/aborte.
Protocolo de Bloqueo de Dos Fases
T1 T2 T3
L-x(A)
Ejemplo de L-s(B)
planificación Read(A)
respetando Read(B)
Write(A)
protocolo de
U(B)
dos fases L-s(B)
estricto Read(B)
U(A), commit
L-x(A)
U(B)
Read(A)
Write(A)
U(A), commit
L-s(A)
Read(A)
U(A), commit
Protocolo de Bloqueo de Dos Fases

 Solución 2: El protocolo de bloqueo de dos


fases riguroso es aun más estricto:
 todos los bloqueos son conservados hasta que se
comprometa/aborte la transacción.
 En este protocolo las transacciones pueden ser
secuencializadas en el orden en el cual son
comprometidas.
Conversiones de Bloqueos

• Los 2 protocolos anteriores hacen que disminuya la


concurrencia. ¿Por qué?

• Problema: ¿Cómo se puede hacer para aumentar el


grado de concurrencia?
Conversiones de Bloqueos

• Los 2 protocolos anteriores hacen que disminuya la


concurrencia. ¿Por qué?

• Problema: ¿Cómo se puede hacer para aumentar el


grado de concurrencia?
• Solución: Se pueden permitir conversiones de
bloqueo.
 Se va a proporcionar un mecanismo para cambiar un
bloqueo compartido por un bloqueo exclusivo y un
bloqueo exclusivo por uno compartido.
Conversiones de Bloqueos

 Protocolo de bloqueo de dos fases con conversiones de


bloqueos:
– Fase de crecimiento:
 Puede adquirir un lock-S en un item
 Puede adquirir un lock-X en un item
 Puede convertor un lock-S a un lock-X (upgrade) - subir

– Fase de decrecimiento:
 Puede liberar un lock-S
 Puede liberar un lock-X
 Puede convertir un lock-X a un lock-S (downgrade) - bajar
Conversiones de Bloqueos

• Se puede forzar a esperar a una transacción que intente subir


un bloqueo sobre un elemento Q.
o Esta espera tiene lugar si Q está bloqueado actualmente por
otra transacción en modo compartido.
• Evaluación: El protocolo asegura secuencialidad por
conflictos.
o Pero todavía espera que el programador inserte las varias
instrucciones de bloqueo.
o se pueden secuenciar las transacciones según sus puntos
de bloqueo
• Además, si se poseen los bloqueos hasta el final de la
transacción las planificaciones son sin cascadas.
Conversiones de Bloqueos

• Los protocolos de dos fases estricto y riguroso con conversión


de bloqueos se usan ampliamente por los sistemas de bases de
datos comerciales.
• Sean las transacciones:
T1 : r(A); w(A); w(B); r(B).
T2 : r(A); w(A); r(B); w(B).

• Ejercicio: agregar instrucciones de bloqueo de modo que


cumplan protocolo de conversión de bloqueos.
Conversiones de Bloqueos

• Las siguientes transacciones obedecen el protocolo de


conversión de bloqueos.
T1 : ls (A); r(A); subir(A); w(A); lx (B); u(A); w(B); bajar(B); r(B); u(B).
T2 : ls (A); r(A); subir(A); w(A); ls (B); r(B); subir(B); w(B); u(B); u(A).

• Ejercicio: hacer ejemplo de planificación legal.


Conversiones de Bloqueos

• Situación: Hasta aquí a las transacciones se les agregan


instruciones de bloqueos a mano para que cumplan
protocolos basados en bloqueos y se construyen las
planificaciones a mano.
 ¿Qué desventajas ven en esta manera de trabajar?
Conversiones de Bloqueos

• Situación: Hasta aquí a las transacciones se les agregan


instruciones de bloqueos a mano para que cumplan
protocolos basados en bloqueos y se construyen las
planificaciones a mano.
 Consecuencia: Esto representa bastante trabajo para el
programador y tiempo de espera para los clientes.
• Problema: es necesario reducir sustancialmente el trabajo
que realiza el programador y también la espera de los
clientes.
Conversiones de Bloqueos

• Solución: que el SGBD reciba pedido de ejecución de una


nueva transacción T y que agregue instrucciones de
bloqueo a T automáticamente y construya la planificación
automáticamente.
 Consecuencia: La espera de los clientes se reduce a un
mínimo.
Adquisición automática de bloqueos

 Una transacción Ti emite una instrucción read/write, sin


llamadas explícitas a instrucciones de bloqueos.
 La operación read(D) es procesada así:
if Ti has a lock on D
then
read(D)
else
begin
if necessary wait until no other
transaction has a lock-X on D
grant Ti a lock-S on D;
read(D)
end
Adquisición automática de bloqueos

 write(D) es procesada así:


if Ti has a lock-X on D
then
write(D)
else
begin
if necessary wait until no other trans. has any lock on D,
if Ti has a lock-S on D
then
upgrade lock on D to lock-X
else
grant Ti a lock-X on D
write(D)
end;
 Todos los bloqueos son liberados después de comprome-
terse o abortar.
Implementación de Bloqueos

 Meta: diseñar un gestor de bloqueos que maneja


automáticamente las solicitudes, otorgamientos y
liberaciones de bloqueos, y también pedido de que se
retrocedan transacciones..
 Un gestor de bloqueos puede ser implementado como un
proceso separado al cual las transacciones envían pedidos
de bloqueos y desbloqueos.
 La transacción solicitante espera hasta que el pedido sea
respondido.
Implementación de Bloqueos

 ¿Cómo puede responder el gestor de bloqueos a un


pedido de bloqueo de una transacción?
Implementación de Bloqueos

 ¿Cómo puede responder el gestor de bloqueos a un


pedido de bloqueo de una transacción?
 El gestor de bloqueos responde a un pedido de bloqueos enviando
mensajes de otorgamiento de bloqueos,
 o un mensaje pidiendo a la transacción que se retroceda, en caso
de un interbloqueo.
Implementación de Bloqueos

 ¿Qué necesito para decidir si a una transacción se le puede


conceder un bloqueo por medio de matriz de compatibilidad
de bloqueos?
Implementación de Bloqueos

 ¿Qué necesito para decidir si a una transacción se le puede


conceder un bloqueo por medio de matriz de compatibilidad
de bloqueos?
 El gestor de bloqueos mantiene una estructura de datos llamada
tabla de bloqueos para registrar bloqueos concedidos y pedidos
pendientes.
 La tabla de bloqueos es usualmente implementada como una tabla
de hash en memoria indexada por el nombre del item de datos
siendo bloqueado.
Tabla de Bloqueos

 Los rectángulos negros indican


bloqueos concedidos, y los blancos
indican pedidos esperando.
 La tabla de bloqueos también registra
el tipo de bloqueo concedido o pedido.
 ¿Cómo se manejan las nuevas
solicitudes de bloqueo usando la
tabla de bloqueos?
Tabla de Bloqueos

 Los rectángulos negros indican


bloqueos concedidos, y los blancos
indican pedidos esperando.
 La tabla de bloqueos también registra
el tipo de bloqueo concedido o pedido.
 ¿Cómo se manejan las nuevas
solicitudes de bloqueo usando la tabla
de bloqueos?
 Son agregadas al final de la cola de
pedidos para el item de datos, y son
otorgadas si son compatibles con los
bloqueos anteriores.
Tabla de Bloqueos

 ¿Cómo se manejan los pedidos de


desbloqueo usando la tabla de
bloqueos?
Tabla de Bloqueos

 ¿Cómo se manejan los pedidos de


desbloqueo usando la tabla de
bloqueos?
 Pedidos de desbloqueo resultan en el
pedido siendo borrado, y pedidos pos-
teriores siendo chequeados para ver si
pueden ser ahora otorgados.
 ¿Qué pasa con la tabla de bloqueos
cuando aborta la transacción?
Tabla de Bloqueos

 ¿Cómo se manejan los pedidos de


desbloqueo usando la tabla de
bloqueos?
 Pedidos de desbloqueo resultan en el
pedido siendo borrado, y pedidos pos-
teriores siendo chequeados para ver si
pueden ser ahora otorgados.
 ¿Qué pasa con la tabla de bloqueos
cuando aborta la transacción?
 Si la transacción aborta, todos los
pedidos esperando u otorgados de la
transacción son borrados.
 El gestor de bloqueos puede man-
tener una lista de bloqueos sostenida
por cada transacción, para implemen-
tar esta con eficiencia
Granularidad Múltiple

 Situación:
 A veces una transacción necesita trabajar con grandes cantidades
de elementos de datos de tamaño similar.
 ¿Qué pasa si se usan los protocolos basados en bloqueos como
los anteriores para manejar estos elementos de datos?
Granularidad Múltiple

 Situación:
 A veces una transacción necesita trabajar con grandes cantidades
de elementos de datos de tamaño similar.
 ¿Qué pasa si se usan los protocolos basados en bloqueos como
los anteriores para manejar estos elementos de datos?
 Esto representa una gran sobrecarga porque se necesitarán
solicitar numerosos bloqueos y también liberarlos.
 Problema: Es necesario disminuir la sobrecarga de manejo
de bloqueos producida por tener que manejar grandes
cantidades de elementos de datos de tamaño similar.
Granularidad Múltiple

 Solución: Considerar granularidad múltiple.


 Granularidad múltiple permite que los ítems de datos sean de
varios tamaños y define una jerarquía de granularidades de datos,
 donde las granularidades finas están anidadas en las
granularidades más gruesas.
 Puede ser representada gráficamente como un árbol.
Granularidad Múltiple

El nivel más alto en la jerarquía representa la BD.


Los niveles abajo son de tipo área, archivo y registro, en ese
orden..
Granularidad Múltiple

 ¿Qué pasa cuando una transacción bloquea un nodo


en un árbol explícitamente?
Granularidad Múltiple

 ¿Qué pasa cuando una transacción bloquea un nodo


en un árbol explícitamente?
 Implícitamente bloquea todos los descendientes del
nodo en el mismo modo.
 Granularidad de un bloqueo: es el nivel en el árbol
donde el bloqueo es hecho y puede ser de:
 Granularidad fina (i.e. más abajo en el árbol): ¿Qué
consecuencias tiene en cuanto al manejo de bloqueos?
Granularidad Múltiple

 ¿Qué pasa cuando una transacción bloquea un nodo


en un árbol explícitamente?
 Implícitamente bloquea todos los descendientes del
nodo en el mismo modo.
 Granularidad de un bloqueo: es el nivel en el árbol
donde el bloqueo es hecho y puede ser de:
 Granularidad fina (i.e. más abajo en el árbol): alta
concurrencia, alta sobrecarga por manejo de bloqueos.
 Granularidad gruesa (i.e. más arriba en el árbol): ¿Qué
consecuencias tiene en cuanto al manejo de bloqueos?
Granularidad Múltiple

 ¿Qué pasa cuando una transacción bloquea un nodo


en un árbol explícitamente?
 Implícitamente bloquea todos los descendientes del
nodo en el mismo modo.
 Granularidad de un bloqueo: es el nivel en el árbol
donde el bloqueo es hecho y puede ser de:
 Granularidad fina (i.e. más abajo en el árbol): alta
concurrencia, alta sobrecarga por manejo de bloqueos.
 Granularidad gruesa (i.e. más arriba en el árbol): baja
sobrecarga por manejo de bloqueos, baja concurrencia.
Granularidad Múltiple

 Se van a usar los modos de bloqueo compartido y


exclusivo.
 Situación: una transacción bloquea explícitamente un nodo en
alguno de estos modos
 ¿Esto qué consecuencias tiene?
Granularidad Múltiple

 Se van a usar los modos de bloqueo compartido y


exclusivo.
 Situación: una transacción bloquea explícitamente un nodo en
alguno de estos modos
 Consecuencia: la transacción también bloquea implícitamente
todos los descendientes de ese nodo con el mismo modo de
bloqueo que ese nodo.
 Si una transacción T pide un bloqueo sobre un nodo n,
¿Cómo se decide si se la hace esperar?
Granularidad Múltiple

 Solución: Hacer las siguientes dos tareas:


 Tarea 1: Se debe recorrer el camino desde n hasta la
raíz del árbol.
 ¿Qué pasa si cualquier nodo del camino está bloqueado
por otra transacción en un modo incompatible?
Granularidad Múltiple

 Solución: Hacer las siguientes dos tareas:


 Tarea 1: Se debe recorrer el camino desde n hasta la
raíz del árbol.
 ¿Qué pasa si cualquier nodo del camino está bloqueado
por otra transacción en un modo incompatible?
 Entonces hay que retrasar T.
Granularidad Múltiple

 Situación: la tarea 1 no dio que hay que retrasar T.


Realizar en este caso la tarea 2.
 Tarea 2: se hace necesario saber qué pasa con los
nodos descendientes del nodo que se quiere bloquear;
 Si alguno de ellos está bloqueado en un modo
incompatible (por T o por otra transacción) con el
bloqueo solicitado por T: hay que retrasar T.
 En caso contrario se puede otorgar el bloqueo solicitado
por T.
 ¿Qué costos implica la tarea 2?
Granularidad Múltiple

 Situación: la tarea 1 no dio que hay que retrasar T.


Realizar en este caso la tarea 2.
 Tarea 2: se hace necesario saber qué pasa con los
nodos descendientes del nodo que se quiere bloquear;
 Si alguno de ellos está bloqueado en un modo
incompatible (por T o por otra transacción) con el
bloqueo solicitado por T: hay que retrasar T.
 En caso contrario se puede otorgar el bloqueo solicitado
por T.
 Evaluación de la tarea 2: la misma implica recorrer un
subárbol, lo cual es ineficiente.
Granularidad Múltiple

 Problema: Es necesario evitar de algún modo el tener


que explorar los descendientes del nodo sobre el cual T
pidió el bloqueo.
 Solución: Definir un nuevo modo de bloqueo llamado
modo de bloqueo intencional.
 Si un nodo se bloquea en modo de bloqueo intencional, es
porque se va a hacer un bloqueo explícito (i.e. con modos
compartido o exclusivo) en una granularidad más fina del árbol.
 Forma de uso: Los bloqueos intencionales se colocan en todos
los ascendientes de un nodo antes de bloquearlo
explícitamente.
Modos de bloqueo intencional

 Además de los modos de bloqueo S y X, hay 3 modos de


bloqueo adicionales en granularidad múltiple:
– Intencional compartido (IS): indica el bloqueo explícito en
un nivel más bajo del árbol pero solo con bloqueos
compartidos.
– Intencional exclusivo (IX): indica el bloqueo explícito en un
nivel más bajo con bloqueos exclusivos o compartidos.
– Compartido e intensional exclusivo (SIX): el subárbol que
tiene a ese nodo por raíz está bloqueado explícitamente en
modo compartido y un bloqueo explícito es hecho en un
nivel más bajo con bloqueos de modo exclusivo.
Modos de bloqueo intencional

 ¿Qué se puede hacer si una transacción pide un bloqueo


compartido sobre un nodo y hay manejo bloqueos
intencionales?
Modos de bloqueo intencional

 ¿Qué se puede hacer si una transacción pide un bloqueo


compartido sobre un nodo y hay manejo bloqueos
intencionales?
 Me fijo si ese nodo o un ancestro está bloqueado por otra
transacción en modo exclusivo o intencional exclusivo o
compartido e intencional exclusivo.
 Si la respuesta es no se otorga el bloqueo, en caso contrario, la
transacción tendrá que esperar.
Modos de bloqueo intencional

 ¿Qué se puede hacer si una transacción pide un bloqueo


exclusivo sobre un nodo y hay manejo bloqueos
intencionales?
Modos de bloqueo intencional

 ¿Qué se puede hacer si una transacción pide un bloqueo


exclusivo sobre un nodo y hay manejo bloqueos
intencionales?
 Me fijo si ese nodo o un ancestro está bloqueado por otra
transacción en un modo explícito o intencional.
 Si la respuesta es no se otorga el bloqueo, en caso contrario, la
transacción tendrá que esperar.
Modos de bloqueo intencional

 Consecuencia: Los bloqueos intencionales permiten


que un nodo de nivel más alto sea bloqueado en S o
X sin tener que chequear todos los nodos
descendientes.
Matriz de compatibilidad con
modos de bloqueo intencional
 La matriz de compatibilidad para todos los modos de bloqueo es:

IS IX S S IX X
IS     

IX     

S     

S IX     

X     
Protocolo de bloqueos de granularidad múltiple
 La transacción Ti puede bloquear un nodo Q, usando las
siguientes reglas:
1. La matriz de compatibilidad de bloqueos debe ser observada.
2. La raíz del árbol debe ser bloqueada primero, y puede ser bloqueada en
cualquier modo.
3. Un nodo Q puede ser bloqueado por Ti en modos S o IS solo si el padre de
Q es actualmente bloqueado por Ti en modo IX o IS.
4. Un nodo Q puede ser bloqueado por Ti en modos X, SIX, o IX solo si el
padre de Q está actualmente bloqueado por Ti en modo IX ó SIX.
5. Ti puede bloquear un nodo solo si no ha desbloqueado previamente
cualquier nodo (i.e. Ti es de dos fases).
6. Ti puede desbloquear un nodo Q solo si ninguno de los hijos de Q están
actualmente bloqueados por Ti.
Protocolo de bloqueos de granularidad múltiple

• Consecuencias de usar protocolo de granularidad


múltiple:
 Toda planificación legal por el protocolo de
granularidad múltiple es secuenciable por conflictos.
 Este protocolo reduce la sobrecarga de bloqueos.
 Es particularmente útil en las aplicaciones con una
mezcla de transacciones cortas que solo acceden a
algunos elementos de datos y transacciones largas que
producen informes a partir de un archivo completo o
un conjunto de archivos.
 En el protocolo de granularidad múltiple son posibles
los interbloqueos.
o Existen técnicas para reducir la frecuencia de interbloqueos y
también para eliminar los interbloqueos completamente.
Granularidad Múltiple

• Considerar una base de datos que contiene dos bloques B1


y B2. El primer bloque contiene 2 registros R1 y R2, y el
segundo bloque contiene tres registros R3, R4 y R5. La
base de datos, los bloques y los registros forman una
jerarquía de elementos bloqueables.
• Las siguientes transacciones obedecen el protocolo de
granularidad múltiple:
 T1 : lIX (BD); lIC (B1); lC (R1); r(R1); lIX (B2); lX (R3); w(R3); u(R1);
u(B1); u(R3); u(B2); u(BD)
 T2 : lIX (BD); lIC (B1); lC (R1); r(R1); lX (B2); w(R3); w(R5); w(R4);
u(B2); u(R1); u(B1); u(BD)
• Ejercicio: Construir una planificación legal de esas
transacciones

También podría gustarte