concurrencia DB
16
CONTROL DE CONCURRENCIA
E
N el Capítulo 15 se vio que una de las propiedades fundamentales de las transacciones
es el aislamiento. 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; dicho controlse lleva a
cabo a través de uno de los muchos mecanismos existentes llamado esquemas de control de
concurrencia.
Todos los esquemas de control de concurrencia que se describen en este capítulo se basan
en la propiedad de secuencialidad. Es decir, todos los esquemas que se presentan aquí aseguran que las planificaciones son secuenciables. En el Capítulo 24 se describen esquemas de control deconcurrencia que admiten planificaciones no secuenciables. En este capítulo se trata la
gestión de la ejecución concurrente de transacciones y se ignoran los fallos. En el Capítulo 17
se verá la manera en que el sistema se puede recuperar de los fallos.
16.1. PROTOCOLOS BASADOS EN EL BLOQUEO
Una forma de asegurar la secuencialidad es exigir que
el acceso a los elementos de datos se haga enexclusión
mutua; es decir, mientras una transacción accede a un
elemento de datos, ninguna otra transacción puede modificar dicho elemento. 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.
Dado un conjunto de modos de bloqueo, se puede
definir sobre ellos unafunción de compatibilidad como
sigue. Utilizamos A y B para representar dos modos de
bloqueo arbitrarios. Supóngase que la transacción Ti
solicita un bloqueo en modo A sobre el elemento Q, en
el que la transacción Tj (Ti & Tj) posee actualmente un
bloqueo de modo B. Si a la transacción Ti se le puede
conceder un bloqueo sobre Q a pesar de la presencia del
bloqueo de modo B, entonces se diceque el modo A es
compatible con el modo B. Tal función se puede representar convenientemente en forma de matriz. La relación de compatibilidad entre los dos modos de bloqueo
que se usan en este apartado se presenta en la matriz
comp de la Figura 16.1. Un elemento comp(A, B) de la
matriz tiene el valor cierto si y sólo si el modo A es compatible con el modo B.
Nótese que el modo compartido escompatible con
otro modo compartido, pero no con el modo exclusivo.
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 se poseen actualmente.
16.1.1. Bloqueos
Existen muchos modosmediante los cuales se puede
bloquear un elemento de datos. En este apartado se centra la atención en dos de dichos modos:
1. 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.
2. Exclusivo. Si una transacción Ti obtiene un bloqueo en modo exclusivo (denotado por X) sobre
el elementoQ, entonces Ti puede tanto leer como
escribir Q.
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. 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 elbloqueo a la transacción.
C
X
C
cierto
falso
X
falso
falso
FIGURA 16.1. Matriz de compatibilidad de bloqueo comp.
383
FUNDAMENTOS DE BASES DE DATOS
T2: bloquear-C(A);
leer(A);
desbloquear(A);
bloquear-C(B);
leer(B);
desbloquear(B);
visualizar(A + B).
Una transacción solicita un bloqueo compartido sobre
el elemento de datos Q a través de la instrucción...
Regístrate para leer el documento completo.