Técnicas de grabado y estampación : procesos y materiales
Abd clase 9 y 10
1. CLASE 9 y 10
ADMINISTRACIÓN DE BASE DE DATOS
CONTROL DE CONCURRENCIA
AUTORES:
Prof. Roxydel Dulcey
Prof. Josué Ramírez
Marzo, 2011
2. Control de Concurrencia
• Cuando se ejecutan varias transacciones
concurrentemente en la base de datos,
puede que deje de conservarse la
propiedad de aislamiento.
• Es necesario que el sistema controle la
interacción entre las transacciones
concurrentes.
3. Control de Concurrencia
• Este control se lleva a cabo a través de
uno de los muchos mecanismos
existentes llamado esquemas de control
de concurrencia.
4. Control de Concurrencia
• Los esquemas de control de concurrencia
que veremos a continuación se basan en
la propiedad de secuencialidad.
• Es decir, aseguran que las planificaciones
sean secuenciables.
5. Control de Concurrencia
• Una forma de asegurar la secuencialidad
es exigir que el acceso a los elementos de
datos se haga en exclusión mutua; es
decir, mientras una transacción accede a
un elemento de datos, ninguna otra
transacción puede modificar dicho
elemento.
6. Control de Concurrencia
• El método más habitual que se usa para
implementar este requisito es permitir que
una transacción acceda a un elemento de
datos sólo si posee actualmente un
bloqueo sobre dicho elemento.
8. Bloqueos
• Bloqueo Compartido:
Si una transacción Ti obtiene un bloqueo
en modo compartido (denotado por C)
sobre el elemento Q, entonces Ti puede
leer Q pero no lo puede escribir.
9. Bloqueos
• Bloqueo Exclusivo:
Si una transacción Ti obtiene un bloqueo
en modo exclusivo (denotado por X)
sobre el elemento Q, entonces Ti puede
tanto leer como escribir Q.
10. Bloqueos
• Es necesario que toda transacción
solicite un bloqueo del modo apropiado
sobre el elemento de datos Q
dependiendo de los tipos de operaciones
que se vayan a realizar sobre Q.
11. Bloqueos
• La petición se hace al gestor de control de
concurrencia.
• La transacción puede realizar la operación
sólo después de que el gestor de control
de concurrencia conceda el bloqueo a la
transacción.
12. Matriz de Compatibilidad de
bloqueos
• Nótese que el modo compartido es compatible
con otro modo compartido, pero no con el modo
exclusivo.
13. Compatibilidad de bloqueos
• En todo momento se pueden tener varios
bloqueos en modo compartido (por varias
transacciones) sobre un elemento de datos en
concreto.
• Una petición posterior de bloqueo en modo
exclusivo debe esperar hasta que se liberen los
bloqueos en modo compartido que estén en ese
momento.
14. Bloqueos
Instrucciones de bloqueo:
• Bloquear-C(Q): solicita un bloqueo
compartido sobre el elemento de datos Q.
• Bloquear-X(Q): solicita un bloqueo
exclusivo sobre el elemento de datos Q.
16. Bloqueos
• Para acceder a un elemento de datos, una
transacción Ti debe en primer lugar bloquear
dicho elemento.
• Si éste ya se encuentra bloqueado por otra
transacción en un modo incompatible, el gestor
de control de concurrencia no concederá el
bloqueo hasta que todos los bloqueos
incompatibles que posean otras transacciones
hayan sido liberados.
17. Bloqueos
• De este modo Ti debe esperar hasta que
se liberen todos los bloqueos
incompatibles que posean otras
transacciones.
• La transacción Ti puede desbloquear un
elemento de datos que haya bloqueado en
algún momento anterior.
18. Bloqueos
• Nótese que la transacción debe poseer un
bloqueo sobre un elemento de datos durante
todo el tiempo que acceda a dicho elemento.
• Además, no siempre es aconsejable que una
transacción desbloquee un elemento de datos
inmediatamente después de finalizar su acceso
sobre él, ya que puede dejar de asegurarse la
secuencialidad.
19. Ejemplo 1
• La transacción T1 transfiere 50 € desde la
cuenta B a la A.
20. Ejemplo 1
• La transacción T2 visualiza la cantidad total de
dinero de las cuentas A y B, es decir, la suma A
+ B.
21. Bloqueos
• Supóngase que los valores de las cuentas
A y B son 100 € y 200 € respectivamente.
Si estas dos transacciones se ejecutan
secuencialmente, tanto en el orden T1, T2
como en el orden T2, T1, entonces la
transacción T2 visualizará el valor 300 €.
22. Bloqueos
• Si por el contrario estas transacciones se
ejecutan concurrentemente, entonces
puede darse la siguiente planificación.
24. Bloqueos
• En ese caso la transacción T2 visualiza
250 €, lo cual es incorrecto.
• Dado que la transacción T1 desbloquea el
elemento B demasiado pronto, lo cual
provoca que T2 perciba un estado
inconsistente.
25. Bloqueos
• La planificación muestra los puntos en los
que el gestor de control de concurrencia
concede los bloqueos.
• La transacción que realiza una petición de
bloqueo no puede ejecutar su siguiente
acción hasta que el gestor de control de
concurrencia conceda dicho bloqueo.
26. Ejemplo 2
• Supóngase ahora que el desbloqueo se retrasa
hasta el final de la transacción:
La transacción T3 corresponde a
T1 con el desbloqueo retrasado
27. Ejemplo 2
La transacción T4 corresponde a
T2 con el desbloqueo retrasado
Se puede verificar que la secuencia
de lecturas y escrituras de la
planificación 1, que provoca que se
visualice un total incorrecto de 250 €,
ya no es posible con T3 y T4.
28. Interbloqueos
• El uso de bloqueos puede conducir a una
situación no deseada, denominada
interbloqueos.
29. Interbloqueos
• T3 posee en bloqueo sobre B en modo exclusivo y
T4 solicita un bloqueo sobre B en modo compartido,
T4 espera a que T3 desbloquee B.
• T4 posee un bloqueo sobre A en modo compartido y
T3 solicita un bloqueo sobre A en modo exclusivo,
T3 espera a que T4 desbloquee A.
30. Interbloqueos
• Así se llega a un estado en el cual
ninguna de las transacciones puede
continuar su ejecución normal. Esta
situación se denomina interbloqueo.
31. Interbloqueos
• Cuando aparece un interbloqueo, el sistema
debe retroceder una de las dos transacciones.
• Una vez que una de ellas se ha retrocedido, se
desbloquean los elementos de datos que
estuvieran bloqueados por la transacción.
• Estos elementos de datos están disponibles
entonces para otra transacción, la cual puede
continuar su ejecución.
32. Bloqueos
• Si no se usan bloqueos, o se desbloquean los
elementos de datos tan pronto como sea posible
después de leerlos o escribirlos, se pueden
obtener estados inconsistentes.
• Y si no se desbloquea un elemento de datos
antes de solicitar un bloqueo sobre otro, pueden
producirse interbloqueos.
33. Bloqueos
• Sin embargo, en general, los
interbloqueos son un mal necesario
asociado a los bloqueos si se quieren
evitar los estados inconsistentes.
34. Bloqueos
• Los interbloqueos son absolutamente
preferibles a los estados inconsistentes,
ya que se pueden tratar retrocediendo las
transacciones, mientras que los estados
inconsistentes producen problemas en el
mundo real que el sistema de base de
datos no puede manejar.
35. Protocolos de bloqueo
• Se exige que toda transacción del sistema
siga un conjunto de reglas llamado
protocolo de bloqueo, que indica el
momento en que una transacción puede
bloquear y desbloquear cada uno de los
elementos de datos.
36. Protocolos de bloqueo
• Los protocolos de bloqueo restringen el
número de planificaciones posibles.
• El conjunto de tales planificaciones es un
subconjunto de todas las planificaciones
secuenciables posibles.
37. Protocolos de bloqueo
Definiciones:
• Sean {T0,T1, , Tn} un conjunto de
transacciones que participan en la planificación
S. Se dice que Ti precede a Tj en S, denotado
por Ti → Tj, si existe un elemento de datos Q tal
que Ti ha obtenido un bloqueo en modo A sobre
Q, y Tj ha obtenido un bloqueo en modo B sobre
Q más tarde y comp(A,B) = falso.
38. Protocolos de bloqueo
• Si Ti → Tj entonces esta precedencia
implica que en cualquier planificación
secuencial equivalente, Ti debe aparecer
antes que Tj.
39. Protocolos de bloqueo
• Este grafo es similar al grafo de
precedencia que utilizamos para
comprobar la secuencialidad en cuanto a
conflictos.
• Los conflictos entre instrucciones
corresponden a modos de bloqueo
incompatibles.
40. Protocolos de bloqueo
Planificación legal:
• Una planificación S es legal bajo un
protocolo de bloqueo dado si S es una
planificación posible para un conjunto de
transacciones que sigan las reglas del
protocolo de bloqueo.
41. Protocolos de bloqueo
• Se dice que un protocolo asegura la
secuencialidad en cuanto a conflictos si y sólo si
todas las planificaciones legales son
secuenciables en cuanto a conflictos; en otras
palabras, para todas las planificaciones legales
la relación → asociada es acíclica.
42. Concesión de bloqueos
• Cuando una transacción solicita un
bloqueo de un modo particular sobre un
elemento de datos y ninguna otra
transacción posee un bloqueo sobre el
mismo elemento de datos en un modo
conflictivo, se puede conceder el bloqueo.
43. Concesión de bloqueos
• Supóngase que la transacción T2 posee
un bloqueo en modo compartido sobre un
elemento de datos y que la transacción T1
solicita un bloqueo en modo exclusivo
sobre dicho elemento de datos.
• Se sabe que T1 debe esperar a que T2
libere el bloqueo en modo compartido.
44. Concesión de bloqueos
• Pero, es posible que haya una secuencia de
transacciones que soliciten un bloqueo en modo
compartido sobre ese elemento de datos, y que
cada una de ellas libere el bloqueo un poco
después de que sea concedido, de forma que
T1 nunca obtenga el bloqueo en modo exclusivo
sobre dicho elemento.
46. Concesión de bloqueos
¿Cómo se puede evitar la inanición de las
transacciones?
• Al conceder los bloqueos de la siguiente
manera:
• Cuando una transacción Ti solicita un bloqueo
sobre un elemento de datos Q en un modo
particular M, el gestor de control de
concurrencia concede el bloqueo siempre que
se cumpla:
47. Concesión de bloqueos
1. No existe otra transacción que posea un
bloqueo sobre Q en un modo que esté
en conflicto con M.
2. No existe otra transacción que esté
esperando un bloqueo sobre Q y que lo
haya solicitado antes que Ti.
48. Concesión de bloqueos
• De este modo, una petición de bloqueo
nunca se quedará bloqueada por otra
petición solicitada posteriormente.
49. Protocolo de bloqueo de 2 fases
• Este protocolo asegura la secuencialidad.
• Exige que cada transacción realice las
peticiones de bloqueo y desbloqueo en
dos fases:
• Fase de crecimiento.
• Fase de decrecimiento.
50. Protocolo de bloqueo de 2 fases
1. Fase de crecimiento. Una transacción
puede obtener bloqueos pero no puede
liberarlos.
2. Fase de decrecimiento. Una transacción
puede liberar bloqueos pero no puede
obtener ninguno nuevo.
51. Protocolo de bloqueo de 2 fases
• Inicialmente una transacción está en la fase de
crecimiento.
• La transacción adquiere los bloqueos que
necesite.
• Una vez que la transacción libera un bloqueo,
entra en la fase de decrecimiento y no puede
realizar más peticiones de bloqueo.
52. Protocolo de bloqueo de 2 fases
Ejemplo:
• Las transacciones T3 y T4 son de dos
fases.
• Las transacciones T1 y T2 no son de dos
fases.
55. Protocolo de bloqueo de 2 fases
• Nótese que no es necesario que las
instrucciones de desbloqueo aparezcan al final
de la transacción.
• Por ejemplo, en el caso de la transacción T3 se
puede trasladar la instrucción desbloquear(B)
justo después de la instrucción bloquear-X(A) y
se sigue cumpliendo la propiedad del bloqueo
de dos fases.
56. Protocolo de bloqueo de 2 fases
Punto de bloqueo:
• Es el punto de la planificación en el cual la
transacción obtiene su bloqueo final (el
final de la fase de crecimiento).
57. Protocolo de bloqueo de 2 fases
• El protocolo de bloqueo de dos fases
asegura la secuencialidad en cuanto a
conflictos.
• No asegura la ausencia de interbloqueos.
58. Protocolo de bloqueo de 2 fases
• Por ejemplo: las transacciones T3 y T4
son de dos fases, pero en la planificación
2 llegan a un interbloqueo.
• En el bloqueo de dos fases puede ocurrir
el retroceso en cascada.
59. Ejemplo 3
• Cada transacción sigue el protocolo de bloqueo de dos fases pero
un fallo de T5 después del paso leer(A) de T7 lleva a un
retroceso en cascada de T6 y T7.
60. Protocolo de bloqueo estricto de 2
fases
• Los retrocesos en cascada se pueden
evitar por medio de una modificación del
protocolo de bloqueo de dos fases que se
denomina protocolo de bloqueo estricto
de dos fases.
61. Protocolo de bloqueo estricto de 2
fases
• Este protocolo exige que, además de que
el bloqueo sea de dos fases, una
transacción debe poseer todos los
bloqueos en modo exclusivo que tome
hasta que dicha transacción se complete.
62. Protocolo de bloqueo estricto de 2
fases
• Este requisito asegura que todo dato que
escribe una transacción no comprometida
está bloqueado en modo exclusivo hasta
que la transacción se completa, evitando
que ninguna otra transacción lea el dato.
63. Protocolo de bloqueo riguroso de 2
fases
• Otra variante del bloqueo de dos fases es
el protocolo de bloqueo riguroso de
dos fases, el cual exige que se posean
todos los bloqueos hasta que se
comprometa (COMMIT) la transacción.
64. Ejemplo 4
• Si se emplea el protocolo de bloqueo de
dos fases entonces T8 debe bloquear a1
en modo exclusivo.
• Por tanto, toda ejecución concurrente de
ambas transacciones conduce a una
ejecución secuencial.
• Nótese sin embargo que T8 sólo necesita
el bloqueo en modo exclusivo sobre a1 al
final de su ejecución, cuando escribe a1.
• Así, si T8 pudiera bloquear inicialmente
a1 en modo compartido y después
pudiera cambiar el bloqueo a modo
exclusivo, se obtendría una mayor
concurrencia, ya que T8 y T9 podrían
acceder a a1 y a2 simultáneamente.
65. Protocolo de bloqueo de 2 fases
• Esta observación lleva a un refinamiento
del protocolo de bloqueo de dos fases
básico en el cual se permiten
conversiones de bloqueo.
66. Protocolo de bloqueo de 2 fases
• Esto se refiere a un mecanismo para cambiar un
bloqueo compartido por un bloqueo exclusivo y
un bloqueo exclusivo por uno compartido.
• Se denota la conversión del modo compartido al
modo exclusivo como subir, y la conversión del
modo exclusivo al modo compartido como bajar.
67. Protocolo de bloqueo de 2 fases
• No se puede permitir la conversión de
modos arbitrariamente.
• Por el contrario, la subida puede tener
lugar sólo en la fase de crecimiento,
mientras que la bajada puede tener lugar
sólo en la fase de decrecimiento.
68. Ejemplo 5
• Las transacciones T8 y T9 se pueden
ejecutar concurrentemente bajo el
protocolo de bloqueo de dos fases
refinado.
69. Ejemplo 5
• Nótese que se puede forzar a
esperar a una transacción que
intente subir un bloqueo sobre
un elemento Q.
• Esta espera forzada tiene lugar
si Q está bloqueado
actualmente por otra
transacción en modo
compartido.
70. Protocolo de bloqueo de 2 fases
• Un esquema simple pero de uso
extendido genera automáticamente las
instrucciones apropiadas de bloqueo y
desbloqueo para una transacción,
basándose en peticiones de lectura y
escritura desde la transacción:
71. Protocolo de bloqueo de 2 fases
1.Cuando una transacción Ti realiza una
operación leer(Q), el sistema genera una
instrucción bloquear-C(Q) seguida de una
instrucción leer(Q).
72. Protocolo de bloqueo de 2 fases
2. Cuando Ti realiza una operación escribir(Q), el
sistema comprueba si Ti posee ya un bloqueo
en modo compartido sobre Q. Si es así,
entonces el sistema genera una instrucción
subir(Q) seguida de la instrucción escribir(Q). En
otro caso el sistema genera una instrucción
bloquear-X(Q) seguida de la instrucción
escribir(Q).
73. Protocolo de bloqueo de 2 fases
3.Todos los bloqueos que obtenga una
transacción no se desbloquean hasta que
dicha transacción se comprometa
(COMMIT) o aborte (ABORT).
74. Protocolo de bloqueo de 2 fases
• Los protocolos de bloqueo de dos fases básico y
de bloqueo de dos fases con conversión de
bloqueos generan sólo planificaciones
secuenciables en cuanto a conflictos.
• Además, si se poseen los bloqueos hasta el final
de la transacción, las planificaciones son sin
cascada.