|
|||||||
|
|
|
|||||
|
|
|||||||
Para garantizar la serializabilidad
pueden utilizarse varios esquemas de control de concurrencia. Todos
trabajan retrasando una operación o abortando la transacción
que solicitó la operación. Los más comunes son:
· Protocolos de bloqueo.
Un bloqueo es una acción que impide el acceso a los datos bloqueados
por parte de
cualquier otra transacción, hasta que estos hayan sido desbloqueados.
Así, un protocolo
de bloqueo es un conjunto de reglas que definen cuando una transacción
puede bloquear
y desbloquear cada uno
de los datos de la base de datos, con lo cual se puede lograr la consistencia
en las
transacciones concurrentes.
· Ordenación por
hora de entrada. Un esquema de ordenación por hora de entrada
garantiza la serializabilidad
seleccionando por adelantado una ordenación entre cada par de
transacciones. A cada transacción del sistema se le asocia
una hora de
entrada única
fija, esta se puede asignar utilizando el valor del reloj del sistema o
utilizando un contador que
se incremente
después de asignar una nueva hora de entrada. Las horas de
entrada de las
transacciones
determinan el orden de serializabilidad. Así, si la hora de
entrada de la transacción A es menor
que la de B, el
esquema garantiza que la planificación que se produce es equivalente
a una serie en la que la
transacción
A aparece antes de B. Esto se logra haciendo que una transacción
retroceda siempre que viole el
orden establecido.
· Validación.
Un esquema de validación es un método de control de concurrencia
adecuado en los casos en los que
la mayor parte de las transacciones son sólo de lectura, y, así
la incidencia de conflictos entre estas
transacciones puede ser muy baja. A cada transacción del sistema
se le asocia una hora de entrada
única fija.
El orden de serializabilidad se determina por la hora de entrada de la
transacción. Una transacción
en este esquema
nunca se retrasa. Sin embargo debe pasar una prueba de validación
para poderse completar.
Si una transacción
no pasa la prueba de validación retrocederá a su estado inicial.
· Multiversión.
Un esquema de control de concurrencia multiversión supone que cada
operación write(Q) crea una
nueva versión de Q. Cuando se solicita una operación
read(Q), el sistema selecciona una de las
versiones de Q para ser leída. El esquema de control de concurrencia
se encarga de que la
selección de
la versión que se va a leer se haga de una manera que garantice
la serializabilidad. Esto se logra
mediante el uso de horas
de entrada. Una operación de lectura siempre se lleva a cabo
con éxito, mientras que
una operación
de escritura puede ocasionar el retroceso de la transacción.
Fuente bibliográfica:
“Fundamentos de Bases de Datos”. Henry F. Kort, Abraham Silberschatz.
Segunda edición. Editorial Mc Graw Hill.