Candados en Base de datos
Una de las principales técnicas para controlar la ejecución concurrente de las transacciones se basa en el concepto de bloquear elementos de información. Un candado es una variable asociada a un elemento de información de la base de datos y describe el estado de ese elemento respecto a las posibles operaciones que se pueden aplicar a él. En general, hay un candado por cada elemento de información en la base de datos. Usamos los candados como una forma de sincronizar el acceso a los elementos de la base de datos por parte de transacciones concurrentes.
Podemos usar varios tipos de candados en el control de la concurrencia.
Candados primarios: Un candado binario puede tener …ver más…
Una transacción T no emitirá una operación desbloquear(X) a menos que ya posea un candado de lectura (compartido) o de escritura (exclusivo) para el elemento X.
En ocasiones es deseable permitir excepciones a las condiciones 4 y 5 de las lista anterior. Por ejemplo, es posible que una transacción T emita un bloquear_lectura(X) y más adelante promueva el bloqueo emitiendo una operación bloquear_escritura(X). Si T es la única transacción con bloqueo de lectura para X en el momento en que se emita la operación bloquear_escritura(X), es posible promover el bloqueo. Una transacción T también puede emitir un bloquear_escritura(X) y después degradar el candado emitiendo una operación bloquear_lectura(X). Si permitimos la promoción y la degradación de candados, deberemos incluir identificadores de transacciones en la estructura de registro de cada candado para almacenar la información de cual transacción posee candados para el elemento, y deberemos hacer modificaciones apropiadas a las descripciones de la operaciones bloquear_lectura(X) y bloquear_escritura(X).
El empleo de candados binarios o de modo múltiple en las transacciones, según descripción anterior no garantiza la seriabilidad de los planes en los que participan las transacciones. Para garantizar la seriabilidad debemos seguir un protocolo adicional sobre la ubicación de las operaciones de bloqueo y desbloqueo dentro de las transacciones. El protocolo mejor conocido es el