Control de concurrencia en sistemas de gestión de bases de datos: bloqueos y protocolos basados en marcas de tiempo.
⚡ Resumen inteligente
El control de concurrencia en los sistemas de gestión de bases de datos (DBMS) administra las transacciones simultáneas para que se ejecuten correctamente sin violar la integridad de los datos. Previene anomalías como actualizaciones perdidas y lecturas sucias mediante protocolos basados en bloqueos, en dos fases, en marcas de tiempo y en validación, que garantizan resultados serializables.

¿Qué es el control de concurrencia?
Control de concurrencia En un sistema de gestión de bases de datos, la gestión de operaciones simultáneas es un procedimiento para administrar operaciones sin que entren en conflicto entre sí. Garantiza que las transacciones de la base de datos se realicen de forma concurrente y precisa para producir resultados correctos sin violar la integridad de los datos de la base de datos correspondiente.
El acceso concurrente es bastante sencillo si todos los usuarios solo leen datos, ya que no hay forma de que interfieran entre sí. Sin embargo, cualquier base de datos práctica combina operaciones de lectura y escritura, por lo que la concurrencia se convierte en un desafío.
El control de concurrencia de los sistemas de gestión de bases de datos (DBMS) se utiliza para abordar dichos conflictos, que ocurren principalmente en un sistema multiusuario. Por lo tanto, el control de concurrencia es uno de los elementos más importantes para el correcto funcionamiento de una base de datos donde dos o más transacciones se ejecutan simultáneamente y requieren acceso a los mismos datos. Trabaja de la mano con Gestión de transacciones, que define las unidades de trabajo que el control de concurrencia debe intercalar de forma segura.
Problemas potenciales de la concurrencia
Estos son algunos problemas a los que probablemente se enfrentará sin un control de concurrencia adecuado en el sistema de gestión de bases de datos (DBMS):
- Actualizaciones perdidas Esto ocurre cuando varias transacciones seleccionan la misma fila y la actualizan en función del valor seleccionado.
- Dependencia no comprometida (Lectura sucia) ocurre cuando una segunda transacción selecciona una fila que ha sido actualizada por otra transacción que aún no se ha confirmado.
- Lectura no repetible Esto ocurre cuando una segunda transacción accede a la misma fila varias veces y lee datos diferentes en cada ocasión.
- Resumen incorrecto Esto ocurre cuando una transacción calcula un resumen del valor de todas las instancias de un elemento de datos repetido, mientras que una segunda transacción actualiza algunas de esas instancias. El resumen resultante no refleja un resultado correcto.
¿Por qué utilizar un método de concurrencia?
Razones para utilizar un método de control de concurrencia en un sistema de gestión de bases de datos (DBMS):
- Aplicar el aislamiento mediante la exclusión mutua entre transacciones conflictivas.
- Para resolver problemas de conflicto de lectura-escritura y escritura-escritura.
- Para preservar la consistencia de la base de datos mediante la aplicación constante de restricciones de ejecución.
- Para controlar la interacción entre transacciones concurrentes, lo cual se logra mediante esquemas de control de concurrencia.
- Para ayudar a garantizar la serialización.
Ejemplo
Supongamos que dos personas acuden a quioscos electrónicos al mismo tiempo para comprar una entrada de cine para la misma película y la misma función.
Sin embargo, solo queda una butaca disponible para esa función en el cine. Sin control de concurrencia, es posible que ambos espectadores terminen comprando una entrada. El control de concurrencia lo impide. Ambos espectadores pueden acceder a la información en la base de datos de asientos del cine, pero el control de concurrencia solo le otorga la entrada al comprador que complete la transacción primero.
Protocolos de control de concurrencia
Los distintos protocolos de control de concurrencia ofrecen diferentes ventajas y desventajas entre la cantidad de concurrencia que permiten y la sobrecarga que imponen. Las principales técnicas de control de concurrencia en los sistemas de gestión de bases de datos (DBMS) son:
- Protocolos basados en bloqueos
- Protocolo de bloqueo de dos fases
- Protocolos basados en marcas de tiempo
- Protocolos basados en validación
Cada uno de ellos se examina a continuación, comenzando por los protocolos basados en bloqueos, que son los más utilizados.
Protocolos basados en bloqueos
Protocolos basados en bloqueo En los sistemas de gestión de bases de datos (DBMS), los bloqueos son un mecanismo que impide que una transacción lea o escriba un elemento de datos hasta que adquiera el bloqueo adecuado. Los protocolos basados en bloqueos ayudan a eliminar el problema de la concurrencia al bloquear o aislar un elemento de datos específico para una sola transacción.
Un bloqueo es una variable de datos asociada a un elemento de datos que indica qué operaciones se pueden realizar sobre él. Los bloqueos ayudan a sincronizar el acceso a los elementos de la base de datos mediante transacciones concurrentes. Todas las solicitudes de bloqueo se realizan al gestor de control de concurrencia, y las transacciones solo se ejecutan una vez que se concede la solicitud de bloqueo.
Cerraduras binarias: Un bloqueo binario en un elemento de datos puede estar en estado bloqueado o desbloqueado.
Compartido/Exclusivo: Este mecanismo de bloqueo separa los candados según su uso. Si un candado se adquiere para realizar una operación de escritura, se denomina candado exclusivo.
1. Bloqueo compartido (S): Un bloqueo compartido también se denomina bloqueo de solo lectura. Con un bloqueo compartido, el elemento de datos puede ser compartido entre transacciones, porque ninguna de ellas tiene permiso para actualizar el elemento. Por ejemplo, si dos transacciones están leyendo el saldo de la cuenta de una persona, base de datos de CRISPR Medicine News Esto les permite leer el saldo mediante un bloqueo compartido. Si otra transacción intenta actualizar ese saldo, el bloqueo compartido lo impide hasta que finalice la lectura.
2. Candado Exclusivo (X): Con un bloqueo exclusivo, un elemento de datos puede leerse y escribirse simultáneamente. Es exclusivo y no puede mantenerse sobre el mismo elemento de datos al mismo tiempo. Se solicita un bloqueo X mediante la instrucción lock-x. Por ejemplo, cuando una transacción necesita actualizar el saldo de una cuenta, se permite mediante un bloqueo X; una segunda transacción que intente leer o escribir en el mismo elemento queda impedida.
3. Protocolo de bloqueo simplificado: Esto permite que las transacciones obtengan un bloqueo sobre cada objeto antes de comenzar una operación. Las transacciones pueden desbloquear el elemento de datos una vez finalizada la operación de escritura.
4. Bloqueo previo a la reclamación: Este protocolo evalúa las operaciones y crea una lista de los datos necesarios para iniciar la ejecución. Cuando se otorgan todos los bloqueos, la transacción se ejecuta y, una vez finalizadas las operaciones, se liberan todos los bloqueos.
Inanición: La inanición se produce cuando una transacción espera indefinidamente para adquirir un bloqueo. Las razones incluyen un esquema de espera mal gestionado para los elementos bloqueados, una fuga de recursos o que la misma transacción sea seleccionada repetidamente como víctima.
Punto muerto: El interbloqueo se refiere a una situación en la que dos o más procesos esperan a que el otro libere un recurso, formando una cadena circular.
Protocolo de bloqueo de dos fases (2PL)
El Protocolo de bloqueo de dos fases, también conocido como 2PL, es un método de control de concurrencia que garantiza la serialización mediante la aplicación de un bloqueo a los datos de la transacción, lo que impide que otras transacciones accedan a los mismos datos simultáneamente.
El protocolo de bloqueo en dos fases permite que cada transacción realice una solicitud de bloqueo o desbloqueo en dos pasos:
- Fase de crecimiento: En esta fase, una transacción puede obtener bloqueos, pero no puede liberar ninguno.
- Fase de contracción: En esta fase, una transacción puede liberar bloqueos, pero no puede obtener ningún bloqueo nuevo.
Es cierto que 2PL ofrece serialización. Sin embargo, no garantiza que no se produzcan interbloqueos. En el diagrama anterior, los detectores de interbloqueos locales y globales buscan interbloqueos y los resuelven reanudando las transacciones a sus estados iniciales.
Método de bloqueo estricto de dos fases
Strict 2PL es prácticamente idéntico a 2PL. La única diferencia radica en que Strict-2PL nunca libera un bloqueo después de usarlo. Mantiene todos los bloqueos hasta el punto de confirmación y los libera todos a la vez cuando finaliza el proceso.
2PL centralizado
En la logística de segundo nivel centralizada (2PL), un único sitio es responsable del proceso de gestión de bloqueos. Dispone de un único gestor de bloqueos para todo el sistema de gestión de bases de datos (DBMS).
Copia principal 2PL
En el mecanismo 2PL de copia primaria, se distribuyen varios gestores de bloqueo en diferentes sitios, y un gestor de bloqueo específico se encarga de administrar el bloqueo de un conjunto de elementos de datos. Cuando se actualiza la copia primaria, el cambio se propaga a las copias secundarias.
2PL distribuido
En este mecanismo, los gestores de bloqueo se distribuyen a todos los sitios y son responsables de administrar los bloqueos de datos en cada sitio. Si no se replican datos, es equivalente a 2PL con copia primaria. Los costos de comunicación de 2PL distribuido son considerablemente más altos que los de 2PL con copia primaria.
Protocolos basados en marcas de tiempo
El Protocolo basado en marcas de tiempo En los sistemas de gestión de bases de datos (DBMS), el algoritmo utiliza la hora del sistema o un contador lógico como marca de tiempo para serializar la ejecución de transacciones concurrentes. Garantiza que cada operación de lectura y escritura conflictiva se ejecute en orden cronológico.
En este método, la transacción más antigua siempre tiene prioridad. Utiliza la hora del sistema para determinar la marca de tiempo de la transacción y es el protocolo de concurrencia más común. Los protocolos basados en bloqueos gestionan el orden entre transacciones conflictivas durante su ejecución; los protocolos basados en marcas de tiempo gestionan los conflictos en cuanto se crea una operación.
Ejemplo:
Suppose there are three 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 T2 and lastly T3.
Ventajas:
- Los cronogramas son serializables, al igual que los protocolos 2PL.
- No hay que esperar a que finalice la transacción, lo que elimina la posibilidad de interbloqueos.
Desventajas: Es posible que se produzca un bloqueo si se reinicia la misma transacción y se interrumpe continuamente.
Protocolo basado en validación
El Protocolo basado en validación En los sistemas de gestión de bases de datos (DBMS), también conocida como técnica de control de concurrencia optimista, se trata de un método para evitar conflictos de concurrencia en las transacciones. En este protocolo, se actualizan copias locales de los datos de la transacción en lugar de los datos originales, lo que reduce las interferencias durante la ejecución.
El protocolo basado en la validación se lleva a cabo en tres fases:
- Fase de lectura
- Fase de Validación
- Fase de escritura
Fase de lectura
En la fase de lectura, una transacción puede leer los valores de los datos, pero las operaciones de escritura o las actualizaciones solo se aplican a las copias locales de los datos, no a la base de datos propiamente dicha.
Fase de Validación
En la fase de validación, se comprueban los datos para garantizar que la aplicación de las actualizaciones no viole la serializabilidad.
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 se descartan y la transacción se revierte.
Comparación de protocolos de control de concurrencia
Las cuatro familias de protocolos hacen apuestas diferentes sobre la frecuencia con la que las transacciones entran en conflicto. La siguiente tabla resume dónde encaja cada una.
| Protocolo | Nuevo enfoque | Deadlock | Mejores cuando |
|---|---|---|---|
| Basado en bloqueo | Pesimista, cerraduras antes del acceso | Posibles | Los conflictos son frecuentes |
| Bloqueo de dos fases | Fases pesimistas, de crecimiento y de contracción | Posibles | Se requiere serializabilidad |
| Basado en marcas de tiempo | Pedidos por marca de tiempo | Sin bloqueos | Hacer el pedido es importante, esperar es costoso. |
| Basado en validación | Optimista, valida antes de escribir. | Sin bloqueos | Los conflictos son poco frecuentes. |
En resumen, los protocolos basados en bloqueos y 2PL parten de la base de que el conflicto es común y lo previenen de antemano, mientras que los protocolos de validación y de marca de tiempo parten de la base de que el conflicto es raro y lo resuelven solo cuando aparece.
Características de un buen protocolo de concurrencia
Un mecanismo ideal de control de concurrencia tiene los siguientes objetivos:
- Debe ser resistente a fallos del sitio y de las comunicaciones.
- 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 ciertas restricciones a la estructura de las acciones atómicas de las transacciones.

