Compatibilidad de bloqueos (motor de base de datos)

La compatibilidad de bloqueos controla si varias transacciones pueden adquirir bloqueos sobre el mismo recurso a la vez. Si un recurso ya está bloqueado por otra transacción, sólo se puede conceder una nueva solicitud de bloqueo si el bloqueo solicitado es compatible con el modo del bloqueo existente. Si el modo del bloqueo solicitado no es compatible con el bloqueo existente, la transacción que solicita el nuevo bloqueo espera a que se libere el bloqueo existente o a que caduque el intervalo de tiempo de espera del bloqueo. Por ejemplo, ningún modo de bloqueo es compatible con bloqueos exclusivos. Mientras se mantiene un bloqueo exclusivo (X), ninguna otra transacción puede adquirir un bloqueo de ninguna clase (compartido, de actualización o exclusivo) en dicho recurso hasta que se libere el bloqueo exclusivo. Como alternativa, si se ha aplicado un bloqueo compartido (S) a un recurso, otras transacciones también pueden adquirir un bloqueo compartido o de actualización (U) en el elemento, aunque la primera transacción no haya terminado. Sin embargo, otras transacciones no pueden adquirir un bloqueo exclusivo si no se anula el bloqueo compartido.

En la tabla siguiente se muestra la compatibilidad de los modos de bloqueo más frecuentes.

 

Modo otorgado

 

 

 

 

 

Modo solicitado

IS

S

U

IX

SIX

X

Intención compartida (IS)

No

Compartido (S)

No

No

No

Actualizar (U)

No

No

No

No

Con intención exclusivo (IX)

No

No

No

No

Compartido con intención exclusivo (SIX)

No

No

No

No

No

Exclusivo (X)

No

No

No

No

No

No

[!NOTA]

Un bloqueo con intención exclusivo (IX) es compatible con un modo de bloqueo IX, porque IX indica la intención de actualizar solamente algunas de las filas, no todas. También se permite que otras transacciones intenten leer o actualizar algunas filas, siempre y cuando no se trate de las mismas filas que están actualizando las demás transacciones.

Matriz de compatibilidad de bloqueos completa

Utilice la siguiente tabla para determinar la compatibilidad de todos los modos de bloqueo disponibles en MicrosoftSQL Server.

Diagrama en el que se muestra la matriz de compatibilidad de un bloqueo