Control de concurrencia de DBMS: marca de tiempo y protocolos basados ​​en bloqueo

¿Qué es el control de concurrencia?

Control de concurrencia en el Sistema de Gestión de Bases de Datos es un procedimiento de gestión de simultáneos.neooperaciones de nosotros 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 leen datos. No hay manera de que puedan interferir unos con otros. Aunque para cualquier base de datos práctica, tendría una combinación de operaciones de LECTURA y ESCRITURA y, por lo tanto, la simultaneidad es un desafío.

El control de concurrencia de DBMS se utiliza para abordar dichos conflictos, que ocurren principalmente en 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 Bases de Datos donde se ejecutan dos o más transacciones de bases de datos simultáneamente.neously, que requieren acceso a los mismos datos.

Posibles problemas de concurrencia

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

  • Actualizaciones perdidas ocurre cuando varias transacciones seleccionan la misma fila y actualizan la fila según el valor seleccionado
  • Los problemas de dependencia no confirmada ocurren cuando la segunda transacción selecciona una fila que es actualizada por otra transacción (lectura sucia)
  • Lectura no repetible ocurre cuando una segunda transacción intenta acceder a la misma fila varias veces y lee datos diferentes cada vez.
  • Problema de resumen incorrecto ocurre cuando una transacción resume 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 concurrencia son DBMS:

  • Aplicar aislamiento mediante exclusión mutua entre transacciones en conflicto
  • Para resolver problemas de conflictos de lectura-escritura y escritura-escritura
  • Preservar la coherencia de la base de datos mediante la preservació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 concurrencia ayuda a garantizar la serialización

Ejemplo

Supongamos que dos personas van a los quioscos electrónicos al mismo tiempo a comprar una entrada de cine para la misma película y el mismo horario.

Sin embargo, sólo queda un asiento disponible para la proyección de la película en esa sala en particular. Sin control de concurrencia en DBMS, es posible que ambos espectadores acaben comprando una entrada. Sin embargo, el método de control de concurrencia no permite que esto suceda. Ambos espectadores aún pueden acceder a la información escrita en la base de datos de asientos de cine. Pero el control de concurrencia sólo proporciona un ticket al comprador que haya completado primero el proceso de transacción.

Protocolos de control de concurrencia

Los diferentes protocolos de control de concurrencia ofrecen diferentes beneficios entre la cantidad de concurrencia que permiten y la cantidad de gastos generales que imponen. seguirwing son 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

Protocolos basados ​​en bloqueo En DBMS es un mecanismo en el que una transacción no puede leer ni escribir los datos hasta que adquiera un bloqueo adecuado. Los protocolos basados ​​en bloqueo ayudan a eliminar el problema de concurrencia en DBMS para simultáneos.neotransacciones estadounidenses bloqueando o aislando una transacción particular para un solo usuario.

A lock is a data variable which is associated with a data item. This lock signifies that operations that can be performed on the data item. Locks in DBMS help synchronize access to the database items by concurrent transactions.

Todas las solicitudes de bloqueo se realizan al administrador de control de concurrencia. Las transacciones continúan solo una vez que se concede la solicitud de bloqueo.

Cerraduras binarias: 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 según sus usos. Si se adquiere un bloqueo en un elemento de datos para realizar una operación de escritura, se denomina bloqueo exclusivo.

1. Bloqueo compartido (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 leen el saldo de la cuenta de una persona. El base de datos les permitirá leer colocando un candado compartido. Sin embargo, si otra transacción quiere actualizar el saldo de esa cuenta, el bloqueo compartido lo impide hasta que finalice el proceso de lectura.

2. Candado Exclusivo (X):

Con el bloqueo exclusivo, un elemento de datos se puede leer y escribir. Esto es exclusivo y no se puede mantener simultáneamente 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 candado X en ella. Por lo tanto, cuando la segunda transacción quiere leer o escribir, el bloqueo exclusivo impide 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 al reclamo

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

Hambre

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

Following son las razones del hambre:

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

Deadlock

Deadlock se refiere a una situación específica en la que dos o más procesos están esperando entre sí para liberar un recurso o más de dos procesos están esperando el recurso en una cadena circular.

Protocolo de bloqueo de dos fases

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.neously. 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 ningún nuevo candado. En cambio, sólo libera los bloqueos adquiridos.

Protocolo de bloqueo de dos fases

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

  • Growing Fase: En esta fase, la transacción puede obtener bloqueos pero no liberar ningún bloqueo.
  • Fase de contracció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 deadlockEso no sucede.

En el diagrama anterior, puede ver que la distribución local y globaladlock detectors are searching for deadlocks y resolverlos reanudando las transacciones a sus estados iniciales.

Método de bloqueo estricto 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 los libera de una sola vez cuando finaliza el proceso.

2PL centralizado

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

Copia primaria 2PL

Mecanismo 2PL de copia primaria, muchos administradores de bloqueo se distribuyen en diferentes sitios. Después de eso, un administrador de bloqueo particular es responsable de administrar el bloqueo para un conjunto de elementos de datos. Cuando se actualiza la copia primaria, 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 gestionar los bloqueos de datos en ese sitio. Si no se replican datos, equivale a una copia primaria 2PL. Los costos de comunicación del 2PL distribuido son bastante más altos que los del 2PL de copia primaria.

Protocolos basados ​​en marcas de tiempo

Protocolo basado en marca 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.

En este método siempre se da prioridad a la transacción más antigua. 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 le ayudan a gestionar 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 0010 
T2 has entered the system at 0020
T3 has entered the system at 0030
Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.

Ventajas:

  • Los horarios son serializables al igual que los protocolos 2PL
  • Sin esperas para la transacción, lo que elimina la posibilidad de deadlocks!

Desventajas:

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

Protocolo basado en validación

Protocolo basado en validación En DBMS, también conocida como técnica de control de concurrencia optimista, es un método para evitar la concurrencia en las transacciones. En este protocolo, se actualizan las copias locales de los datos de la transacción 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 de la siguiente manera.wing tres fases:

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

Fase de lectura

En la fase de lectura, los valores de los datos de la base de datos se pueden leer mediante una transacción, 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, se verifican los datos para garantizar que no haya ninguna violación de la serialización al aplicar las actualizaciones de la transacción 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, en caso contrario; las actualizaciones no se aplican y la transacción se revierte.

Características de un buen protocolo de concurrencia

Un mecanismo DBMS de control de concurrencia ideal tiene el siguientewing objetivos:

  • Debe ser resistente a fallas del sitio y de comunicación.
  • 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 los gastos generales.
  • Debe imponer algunas restricciones a la estructura de atomacciones ic de transacciones.

Resumen

  • El control de concurrencia es el procedimiento en DBMS para gestionar simultáneosneooperaciones estadounidenses sin que entren en conflicto entre sí.
  • Las actualizaciones perdidas, las lecturas sucias, las lecturas no repetibles y los problemas de resumen incorrectos son problemas que se enfrentan debido a la falta de control de concurrencia.
  • Basado en bloqueo, de dos fases, basado en marca de tiempo y basado en validación son tipos de protocolos de manejo de concurrencia
  • El candado puede ser Compartido (S) o Exclusivo (X)
  • El protocolo de bloqueo de dos fases, también conocido como protocolo 2PL, necesita que la transacción adquiera un bloqueo después de liberar uno de sus bloqueos. Tiene 2 fases growing y encogiéndose.
  • El algoritmo basado en marcas de tiempo utiliza una marca de tiempo para serializar la ejecución de transacciones simultáneas. El protocolo utiliza el Hora del sistema o recuento lógico como una marca de tiempo.