Modalidades de bloqueo y compatibilidad de bloqueos

La modalidad de un bloqueo indica qué acceso al objeto bloqueado se permite para el propietario del bloqueo y para los procesos simultáneos.

Iniciar la información de la interfaz de programación específica del programa. Db2 usos de los modos de bloqueo para determinar si un bloqueo es compatible con otro. Algunas modalidades de bloqueo no excluyen a todos los demás usuarios. Por ejemplo, suponga que el proceso de aplicación A mantiene un bloqueo en un espacio de tablas al que el proceso B también desea acceder. Db2 solicita, en nombre del proceso B, un bloqueo de algún modo en particular. Si la modalidad del bloqueo para el proceso A permite el bloqueo solicitado por el proceso B, las modalidades de los dos bloqueos se consideran compatibles. Sin embargo, si los dos bloqueos no son compatibles, el proceso B no puede continuar. Se debe esperar hasta que el proceso A libere su bloqueo y hasta que todos los demás bloqueos incompatibles se liberen.

Modalidades de bloqueo de página y de fila

Las modalidades y sus efectos aparecen listados en orden de control creciente sobre los recursos.

Bloqueo S (compartición)
El propietario del bloqueo y cualquier proceso simultáneo pueden leer, pero no cambiar, la página o fila bloqueada. Los procesos simultáneos pueden adquirir bloqueos S o U en la página o fila o pueden leer datos sin adquirir un bloqueo de página o fila. Solo se puede adquirir un candado en U al mismo tiempo que uno o más candados en S.
Bloqueo U (actualización)
El propietario del bloqueo puede leer, pero no cambiar, la página o fila bloqueada. Los procesos simultáneos pueden adquirir bloqueos S o pueden leer datos sin adquirir un bloqueo de página o fila, pero ningún proceso simultáneo puede adquirir un bloqueo U.

Los bloqueos U reducen la posibilidad de puntos muertos cuando el propietario del bloqueo está leyendo una página o fila para determinar si debe cambiarlos. El propietario puede comenzar con el bloqueo U y luego aumentar el bloqueo a un bloqueo X para modificar la página o fila.

Bloqueo X (exclusivo)
El propietario del bloqueo puede leer o cambiar la página o fila bloqueada. Un proceso simultáneo no puede adquirir bloqueos S, U ni X sobre la página o fila. Sin embargo, un proceso simultáneo, como los vinculados con las opciones de vinculación CURRENTDATA(NO) o ISOLATION(UR) o los que se ejecutan con el valor YES para el parámetro de subsistema EVALUNC, pueden leer los datos sin adquirir ningún bloqueo de página o fila.

Modalidades de bloqueo de espacio de tabla y de tabla

Cuando se bloquea una página o fila, la tabla, partición o espacio de tabla que la contienen también se bloquean. Este bloqueo de intención indica el plan que el proceso de aplicaciones tiene para acceder a los datos. En este caso, el bloqueo de tabla, partición o espacio de tabla tiene una de las siguientes modalidades intencionadas: IS para compartimiento de intención, IX para exclusivo de intención o SIX para compartimiento con exclusivo de intención.

Las modalidades S, U y X de los bloqueos de tabla, partición y espacio de tabla a veces se denominan modalidades de bloqueo en bruto. En el contexto de lectura, SIX es un bloqueo de modalidad en bruto porque no se obtienen bloqueos de página o de fila; es este sentido, es como un bloqueo S.

Las modalidades y sus efectos aparecen listados en orden de control creciente sobre los recursos.

Bloqueo IS (compartimiento de intención)
El propietario del bloqueo puede leer los datos de la tabla, partición o espacio de tabla, pero no puede cambiarlos. Los datos pueden ser leídos y cambiados por procesos simultáneos. El propietario del bloqueo puede adquirir un bloqueo de página o fila sobre cualquier dato que lea.
Bloqueo IX (exclusivo de intención)
El propietario del bloqueo y procesos simultáneos pueden leer y cambiar los datos de la tabla, partición o espacio de tabla. El propietario del bloqueo puede adquirir un bloqueo de página o fila sobre cualquier dato que lea; debe adquirir un bloqueo sobre cualquier datos que cambie.
Bloqueo S (compartición)
El propietario del bloqueo y procesos simultáneos pueden leer, pero no cambiar, los datos de la tabla, partición o espacio de tabla. El propietario del bloqueo no necesita adquirir un bloqueo de página o fila sobre los datos que lee.
Bloqueo U (actualización)
El propietario del bloqueo puede leer, pero no cambiar, los datos bloqueados; pero el propietario puede aumentar el bloqueo a la categoría de bloqueo X y luego cambiar los datos. Los procesos simultáneos con el bloqueo U pueden adquirir bloqueos S y leer los datos, pero ningún proceso simultáneo puede adquirir un bloqueo U. El propietario del bloqueo no necesita adquirir bloqueos de página o fila.

Los bloqueos U reducen la posibilidad de puntos muertos cuando el propietario del bloqueo está leyendo datos para determinar si debe cambiarlos. Los bloqueos U se adquieren sobre un espacio de tabla cuando el tamaño de bloqueo es TABLESPACE y la sentencia es SELECT con una cláusula FOR UPDATE. Similarmente, los bloqueos U se adquieren sobre una tabla cuando el tamaño de bloqueo es TABLE y la sentencia es SELECT con una cláusula FOR UPDATE.

Bloqueo SIX (compartición con exclusivo de intención)
El propietario del bloqueo puede leer y cambiar los datos de la tabla, partición o espacio de tabla. Los procesos simultáneos pueden leer los datos de la tabla, partición o espacio de tabla, pero no pueden cambiarlos. El propietario del bloqueo adquiere bloqueos de página o fila solamente cuando cambia datos.
Bloqueo X (exclusivo)
El propietario del bloqueo puede leer y cambiar los datos de la tabla, partición o espacio de tabla. Un proceso simultáneo puede acceder a los datos si el proceso se ejecuta con aislamiento UR o si los datos de un espacio de tabla particionado se ejecutan con aislamiento CS y CURRENTDATA((NO). El propietario del bloqueo no necesita adquirir bloqueos de página o fila.

Por ejemplo, una sentencia de SQL localiza a John Smith en una tabla de datos de cliente y cambia su dirección. La sentencia bloquea todo el espacio de tabla en modalidad IX y la fila específica que modifica en modalidad X.

Compatibilidad de modalidades de bloqueo

La tabla siguiente muestra la compatibilidad de dos modalidades para bloqueos de página y fila. No se plantea ninguna cuestión de compatibilidad entre bloqueos de página y fila, porque una partición o espacio de tabla no puede utilizar bloqueos de página y de fila.

Tabla 1. Matriz de compatibilidad de modalidades de bloqueo de páginas y bloqueo de filas
Modalidad de bloqueo Compartimiento (bloqueo S) Actualización (bloqueo U) Exclusividad (bloqueo X)
Compartimiento (bloqueo S) Nee
Actualización (bloqueo U) Nee Nee
Exclusividad (bloqueo X) Nee Nee Nee

La compatibilidad para los bloqueos de espacio de tabla es algo más compleja que para los bloqueos de página o fila. La siguiente tabla muestra la compatibilidad de dos modos de bloqueo cualesquiera para particiones, espacio de tabla o bloqueos de tabla.


Tabla 2. Compatibilidad de modalidades de bloqueo de tabla y espacio de tablas (o partición)
Modalidad de bloqueo ES IX S U SIX X
ES Nee
IX Nee Nee Nee Nee
S Nee Nee Nee
U Nee Nee Nee Nee
SIX Nee Nee Nee Nee Nee
X Nee Nee Nee Nee Nee Nee

Finalizar la información de la interfaz de programación específica del programa.