Los protocolos de control de concurrencia son técnicas utilizadas para gestionar la concurrencia y evitar problemas como los bloqueos mutuos o deadlocks en sistemas de bases de datos.
Un deadlock o interbloqueo ocurre cuando dos o más transacciones se bloquean
entre sí, impidiendo que ninguna de ellas pueda avanzar. Esto sucede cuando cada transacción está esperando un recurso que está siendo utilizado por otra transacción, creando así un ciclo de bloqueo.
Para crear un deadlock y observar cómo se maneja en un servidor, es necesario
simular un escenario en el que dos transacciones se bloqueen mutuamente. Supongamos que tenemos dos transacciones, T1 y T2, y dos recursos, R1 y R2. Las transacciones siguen el siguiente orden:
• T1 adquiere el recurso R1.
• T2 adquiere el recurso R2. • T1 intenta adquirir el recurso R2, pero se bloquea porque está siendo utilizado por T2. • T2 intenta adquirir el recurso R1, pero se bloquea porque está siendo utilizado por T1.
En este punto, se ha creado un deadlock. Ambas transacciones están esperando
un recurso que no pueden liberar hasta que obtengan el recurso que la otra transacción está utilizando.
El servidor de la base de datos, al darse cuenta del deadlock, debe intervenir y
resolver la situación.
Existen diferentes estrategias para manejar deadlocks, entre las cuales se
encuentran:
• Abortar una o varias transacciones involucradas en el deadlock y permitir
que las otras transacciones avancen. • Realizar un rollback de una o varias transacciones involucradas en el deadlock y permitir que las otras transacciones avancen. • Utilizar algoritmos de detección y prevención de deadlocks para evitar que ocurran en primer lugar. • El enfoque específico para manejar un deadlock dependerá de la implementación del servidor de base de datos y de la estrategia seleccionada. En algunos casos, el servidor puede registrar el deadlock en un archivo de registro para su análisis posterior o generar una alerta para que un administrador intervenga manualmente.
En algunos casos, el servidor puede registrar el deadlock en un archivo de registro
para su análisis posterior o generar una alerta para que un administrador intervenga manualmente.