Control de simultaneidad de DBMS: marca de tiempo & Protocolos basados ​​en bloqueos

¿Qué es el control de concurrencia?

El control de concurrencia en el sistema de administración de bases de datos es un procedimiento para administrar operaciones simultáneas sin entrar en conflicto entre sí. Garantiza que las transacciones de la base de datos se realicen de forma simultánea y precisa para producir resultados correctos sin violar la integridad de los datos de la base de datos respectiva.

El acceso simultáneo es bastante fácil si todos los usuarios solo están leyendo datos. No hay forma de que puedan interferir entre sí. Aunque para cualquier base de datos práctica, tendría una combinación de operaciones READ y WRITE y, por lo tanto, la concurrencia es un desafío.

El control de simultaneidad de DBMS se utiliza para abordar este tipo de conflictos, que en su mayoría ocurren con un sistema multiusuario. Por lo tanto, el Control de Concurrencia es el elemento más importante para el correcto funcionamiento de un Sistema de Gestión de Base de Datos donde se ejecutan dos o más transacciones de base de datos simultáneamente, las cuales requieren acceso a los mismos datos.

En este tutorial, aprenderá

  • ¿Qué es el control de concurrencia?
  • Problemas potenciales de concurrencia
  • ¿Por qué utilizar el método de concurrencia?
  • Protocolos de control de simultaneidad
  • Protocolos basados ​​en bloqueos
  • Protocolo de bloqueo de dos fases (2PL)
  • Protocolos basados ​​en marcas de tiempo
  • Protocolo basado en validación
  • Características del buen protocolo de concurrencia

Problemas potenciales de concurrencia

A continuación, presentamos algunos problemas que probablemente enfrentará al utilizar el método de control de simultaneidad de DBMS:

  • Las actualizaciones perdidas ocurren cuando varias transacciones seleccionan la misma fila y actualizan la fila según el valor seleccionado
  • Los problemas de dependencia no comprometidos ocurren cuando la segunda transacción selecciona una fila que es actualizada por otra transacción ( lectura sucia )
  • La lectura no repetible ocurre cuando una segunda transacción intenta acceder a la misma fila varias veces y lee diferentes datos cada vez.
  • El problema de resumen incorrecto ocurre cuando una transacción se resume en el valor de todas las instancias de un elemento de datos repetido, y la segunda transacción actualiza algunas instancias de ese elemento de datos específico. En esa situación, el resumen resultante no refleja un resultado correcto.

¿Por qué utilizar el método de concurrencia?

Las razones para utilizar el método de control de simultaneidad son DBMS:

  • Aplicar el aislamiento a través de la exclusión mutua entre transacciones en conflicto
  • Para resolver problemas de conflicto de lectura-escritura y escritura-escritura
  • Para preservar la coherencia de la base de datos mediante la conservación constante de las obstrucciones de ejecución
  • El sistema necesita controlar la interacción entre las transacciones concurrentes. Este control se logra mediante esquemas de control concurrente.
  • El control de simultaneidad ayuda a garantizar la serialización

Ejemplo

Suponga que dos personas que van a los quioscos electrónicos al mismo tiempo para comprar un boleto de cine para la misma película y el mismo horario de presentación.

Sin embargo, solo queda un asiento para el espectáculo de la película en ese teatro en particular. Sin control de concurrencia en DBMS, es posible que ambos espectadores terminen comprando un boleto. Sin embargo, el método de control de simultaneidad no permite que esto suceda. Ambos espectadores aún pueden acceder a la información escrita en la base de datos de asientos para películas. Pero el control de concurrencia solo proporciona un ticket al comprador que ha completado el proceso de transacción primero.

Protocolos de control de simultaneidad

Los diferentes protocolos de control de simultaneidad ofrecen diferentes beneficios entre la cantidad de simultaneidad que permiten y la cantidad de sobrecarga que imponen. A continuación se muestran las técnicas de control de concurrencia en DBMS:

  • Protocolos basados ​​en bloqueos
  • Protocolo de bloqueo de dos fases
  • Protocolos basados ​​en marcas de tiempo
  • Protocolos basados ​​en validación

Protocolos basados ​​en bloqueos

Los protocolos basados en bloqueos en DBMS son un mecanismo en el que una transacción no puede leer o escribir los datos hasta que adquiere un bloqueo apropiado. Los protocolos basados ​​en bloqueo ayudan a eliminar el problema de concurrencia en DBMS para transacciones simultáneas al bloquear o aislar una transacción en particular para un solo usuario.

Un candado es una variable de datos que está asociada con un elemento de datos. Este bloqueo significa que las operaciones que se pueden realizar en el elemento de datos. Los bloqueos en DBMS ayudan a sincronizar el acceso a los elementos de la base de datos mediante transacciones simultáneas.

Todas las solicitudes de bloqueo se realizan al administrador de control de simultaneidad. Las transacciones proceden solo una vez que se concede la solicitud de bloqueo.

Bloqueos binarios: un bloqueo binario en un elemento de datos puede estar bloqueado o desbloqueado.

Compartido / exclusivo: este tipo de mecanismo de bloqueo separa los bloqueos en DBMS en función de sus usos. Si se adquiere un bloqueo en un elemento de datos para realizar una operación de escritura, se denomina bloqueo exclusivo.

1. Cerradura compartida (S):

Un bloqueo compartido también se denomina bloqueo de solo lectura. Con el bloqueo compartido, el elemento de datos se puede compartir entre transacciones. Esto se debe a que nunca tendrá permiso para actualizar los datos del elemento de datos.

Por ejemplo, considere un caso en el que dos transacciones están leyendo el saldo de la cuenta de una persona. La base de datos les permitirá leer colocando un candado compartido. Sin embargo, si otra transacción desea actualizar el saldo de esa cuenta, el bloqueo compartido lo impedirá hasta que finalice el proceso de lectura.

2. Bloqueo exclusivo (X):

Con el bloqueo exclusivo, un elemento de datos se puede leer y escribir. Esto es exclusivo y no se puede mantener al mismo tiempo en el mismo elemento de datos. X-lock se solicita mediante la instrucción lock-x. Las transacciones pueden desbloquear el elemento de datos después de finalizar la operación de "escritura".

Por ejemplo, cuando una transacción necesita actualizar el saldo de la cuenta de una persona. Puede permitir esta transacción colocando un bloqueo X en ella. Por tanto, cuando la segunda transacción quiere leer o escribir, el bloqueo exclusivo evitará esta operación.

3. Protocolo de bloqueo simplista

Este tipo de protocolos basados ​​en bloqueos permite que las transacciones obtengan un bloqueo en cada objeto antes de comenzar la operación. Las transacciones pueden desbloquear el elemento de datos después de finalizar la operación de "escritura".

4. Bloqueo previo a la reclamación

El protocolo de bloqueo de reclamación previa ayuda a evaluar las operaciones y a crear una lista de elementos de datos requeridos que se necesitan para iniciar un proceso de ejecución. En la situación en la que se otorgan todos los bloqueos, la transacción se ejecuta. Después de eso, todos los bloqueos se liberan cuando todas sus operaciones terminan.

Inanición

El hambre es la situación en la que una transacción necesita esperar un período indefinido para adquirir un bloqueo.

Las siguientes son las razones de la hambruna:

  • Cuando el esquema de espera para los elementos bloqueados no se gestiona correctamente
  • En caso de fuga de recursos
  • La misma transacción se selecciona como víctima repetidamente

Punto muerto

El punto muerto se refiere a una situación específica en la que dos o más procesos están esperando que el otro libere un recurso o más de dos procesos están esperando el recurso en una cadena circular.

Protocolo de bloqueo de dos fases

El protocolo de bloqueo de dos fases, también conocido como protocolo 2PL, es un método de control de concurrencia en DBMS que garantiza la serialización aplicando un bloqueo a los datos de la transacción que bloquea otras transacciones para acceder a los mismos datos simultáneamente. El protocolo de bloqueo de dos fases ayuda a eliminar el problema de concurrencia en DBMS.

Este protocolo de bloqueo divide la fase de ejecución de una transacción en tres partes diferentes.

  • En la primera fase, cuando la transacción comienza a ejecutarse, requiere permiso para los bloqueos que necesita.
  • La segunda parte es donde la transacción obtiene todos los bloqueos. Cuando una transacción libera su primer bloqueo, comienza la tercera fase.
  • En esta tercera fase, la transacción no puede exigir nuevos bloqueos. En cambio, solo libera los bloqueos adquiridos.

El protocolo de bloqueo de dos fases permite que cada transacción realice una solicitud de bloqueo o desbloqueo en dos pasos:

  • Fase de crecimiento : en esta fase, la transacción puede obtener bloqueos pero no puede liberar ningún bloqueo.
  • Fase de reducción : en esta fase, una transacción puede liberar bloqueos pero no obtener ningún bloqueo nuevo

Es cierto que el protocolo 2PL ofrece serialización. Sin embargo, no garantiza que no se produzcan interbloqueos.

En el diagrama anterior, puede ver que los detectores de puntos muertos locales y globales están buscando puntos muertos y los resuelven reanudando las transacciones a sus estados iniciales.

Estricto método de bloqueo de dos fases

El sistema de bloqueo estricto de dos fases es casi similar al 2PL. La única diferencia es que Strict-2PL nunca libera un candado después de usarlo. Mantiene todos los bloqueos hasta el punto de confirmación y libera todos los bloqueos de una vez cuando finaliza el proceso.

2PL centralizado

En Centralized 2 PL, un solo sitio es responsable del proceso de administración de bloqueos. Tiene un solo administrador de bloqueo para todo el DBMS.

Copia principal 2PL

Mecanismo 2PL de copia principal, muchos administradores de bloqueo se distribuyen a diferentes sitios. Después de eso, un administrador de bloqueo en particular es responsable de administrar el bloqueo para un conjunto de elementos de datos. Cuando se ha actualizado la copia principal, el cambio se propaga a los esclavos.

2PL distribuido

En este tipo de mecanismo de bloqueo de dos fases, los administradores de bloqueo se distribuyen a todos los sitios. Son responsables de administrar los bloqueos de datos en ese sitio. Si no se replican datos, es equivalente a la copia primaria 2PL. Los costos de comunicación de Distributed 2PL son bastante más altos que los de la copia principal 2PL

Protocolos basados ​​en marcas de tiempo

El protocolo basado en marcas de tiempo en DBMS es un algoritmo que utiliza la hora del sistema o el contador lógico como marca de tiempo para serializar la ejecución de transacciones concurrentes. El protocolo basado en marca de tiempo garantiza que todas las operaciones de lectura y escritura en conflicto se ejecuten en un orden de marca de tiempo.

La transacción anterior siempre tiene prioridad en este método. Utiliza la hora del sistema para determinar la marca de tiempo de la transacción. Este es el protocolo de concurrencia más utilizado.

Los protocolos basados ​​en bloqueos lo ayudan a administrar el orden entre las transacciones en conflicto cuando se ejecutarán. Los protocolos basados ​​en marcas de tiempo gestionan los conflictos tan pronto como se crea una operación.

Ejemplo:

Suppose there are there transactions T1, T2, and T3.T1 has entered the system at time 0010T2 has entered the system at 0020T3 has entered the system at 0030Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.

Ventajas :

  • Los horarios son serializables al igual que los protocolos 2PL
  • ¡No espere la transacción, lo que elimina la posibilidad de interbloqueos!

Desventajas:

La inanición es posible si la misma transacción se reinicia y se aborta continuamente

Protocolo basado en validación

El protocolo basado en validación en DBMS, también conocido como técnica de control de simultaneidad optimista, es un método para evitar la simultaneidad en las transacciones. En este protocolo, las copias locales de los datos de la transacción se actualizan en lugar de los datos en sí, lo que resulta en menos interferencia durante la ejecución de la transacción.

El protocolo basado en validación se realiza en las siguientes tres fases:

  1. Fase de lectura
  2. Fase de validación
  3. Fase de escritura

Fase de lectura

En la fase de lectura, una transacción puede leer los valores de datos de la base de datos, pero la operación de escritura o las actualizaciones solo se aplican a las copias de datos locales, no a la base de datos real.

Fase de validación

En la fase de validación, los datos se verifican para garantizar que no haya una violación de la serialización al aplicar las actualizaciones de transacciones a la base de datos.

Fase de escritura

En la fase de escritura, las actualizaciones se aplican a la base de datos si la validación es exitosa, de lo contrario; las actualizaciones no se aplican y la transacción se revierte.

Características del buen protocolo de concurrencia

Un mecanismo DBMS de control de concurrencia ideal tiene los siguientes objetivos:

  • Debe ser resistente a los fallos de comunicación y del sitio.
  • Permite la ejecución paralela de transacciones para lograr la máxima concurrencia.
  • Sus mecanismos de almacenamiento y métodos computacionales deben ser modestos para minimizar la sobrecarga.
  • Debe imponer algunas restricciones a la estructura de las acciones atómicas de las transacciones.

Resumen

  • El control de concurrencia es el procedimiento en DBMS para administrar operaciones simultáneas sin entrar en conflicto entre sí.
  • Las actualizaciones perdidas, la lectura sucia, la lectura no repetible y el problema de resumen incorrecto son problemas que se enfrentan debido a la falta de control de concurrencia.
  • Los tipos de protocolos de manejo de simultaneidad son basados ​​en bloqueo, dos fases, marca de tiempo y validación
  • El candado puede ser Compartido (S) o Exclusivo (X)
  • El protocolo de bloqueo de dos fases, que también se conoce como protocolo 2PL, necesita una transacción, debe adquirir un bloqueo después de liberar uno de sus bloqueos. Tiene 2 fases de crecimiento y encogimiento.
  • El algoritmo basado en marcas de tiempo utiliza una marca de tiempo para serializar la ejecución de transacciones concurrentes. El protocolo utiliza la hora del sistema o el recuento lógico como marca de tiempo.

Articulos interesantes...