Implementación de Locking en DBMS

Los protocolos de bloqueo se utilizan en los sistemas de gestión de bases de datos como medio de control de concurrencia. Múltiples transacciones pueden solicitar un bloqueo en un elemento de datos simultáneamente. Por lo tanto, requerimos un mecanismo para administrar las requests de bloqueo realizadas por transacciones. Tal mecanismo se llama Lock Manager . Se basa en el proceso de paso de mensajes donde las transacciones y el administrador de bloqueos intercambian mensajes para manejar el bloqueo y desbloqueo de elementos de datos.

Estructura de datos utilizada en Lock Manager:
la estructura de datos requerida para la implementación del bloqueo se denomina tabla de bloqueo .

  1. Es una tabla hash donde el nombre de los elementos de datos se utilizan como índice hash.
  2. Cada elemento de datos bloqueado tiene una lista vinculada asociada a él.
  3. Cada Node en la lista enlazada representa la transacción que solicitó el bloqueo, el modo de bloqueo solicitado (mutuo/exclusivo) y el estado actual de la solicitud (concedido/en espera).
  4. Cada nueva solicitud de bloqueo para el elemento de datos se agregará al final de la lista vinculada como un nuevo Node.
  5. Las colisiones en la tabla hash se manejan mediante la técnica de enstringmiento separado.

Considere el siguiente ejemplo de tabla de bloqueo:

Explicación: En la figura anterior, los elementos de datos bloqueados presentes en la tabla de bloqueo son 5, 47, 167 y 15.

Las transacciones que han solicitado el bloqueo se han representado mediante una lista vinculada que se muestra debajo de ellas mediante una flecha hacia abajo.

Cada Node en la lista vinculada tiene el nombre de la transacción que solicitó el elemento de datos como T33, T1, T27, etc.

El color del Node representa el estado, es decir, si se ha concedido el bloqueo o si está en espera.

Tenga en cuenta que se produjo una colisión para los elementos de datos 5 y 47. Se resolvió mediante un enstringmiento separado donde cada elemento de datos pertenece a una lista enlazada. El elemento de datos actúa como encabezado de la lista vinculada que contiene la solicitud de bloqueo.

Funcionamiento de Lock Manager –

  1. Inicialmente, la tabla de bloqueo está vacía ya que ningún elemento de datos está bloqueado.
  2. Cada vez que el administrador de bloqueo recibe una solicitud de bloqueo de una transacción T i en un elemento de datos Q i en particular , pueden surgir los siguientes casos:
  • Si Q i aún no está bloqueado, se creará una lista vinculada y se otorgará el bloqueo a la transacción solicitante T i .
  • Si el elemento de datos ya está bloqueado, se agregará un nuevo Node al final de su lista vinculada que contiene la información sobre la solicitud realizada por Ti .
  • Si el modo de bloqueo solicitado por Ti es compatible con el modo de bloqueo de la transacción que actualmente tiene el bloqueo, T i también adquirirá el bloqueo y el estado cambiará a ‘concedido’. De lo contrario, el estado del bloqueo de Ti será ‘esperando’.
  • Si una transacción Ti quiere desbloquear el elemento de datos que tiene actualmente, enviará una solicitud de desbloqueo al administrador de bloqueo. El administrador de bloqueo eliminará el Node de Ti de esta lista vinculada. El bloqueo se otorgará a la siguiente transacción en la lista.
  • A veces, la transacción T i puede tener que cancelarse. En tal caso, todas las requests de espera realizadas por Ti se eliminarán de las listas vinculadas presentes en la tabla de bloqueo. Una vez que se complete el aborto, también se liberarán los bloqueos que tiene T i .
  • Referencia –
    Conceptos del sistema de base de datos, 6.ª edición

    Publicación traducida automáticamente

    Artículo escrito por ujjwal rawat 1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *