Granularidad y jerarquías de bloqueo
El Microsoft SQL Server Database Engine (Motor de base de datos de SQL Server) admite bloqueo multigranular. Esta función permite que una transacción bloquee diferentes tipos de recursos. Para minimizar el costo del bloqueo, Motor de base de datos bloquea automáticamente los recursos en el nivel apropiado para la tarea. Los bloqueos de menor granularidad, como es el caso de las filas, aumentan la simultaneidad. Sin embargo, se produce una sobrecarga mayor porque cuantas más filas se bloquean, más bloqueos se deben mantener. Los bloqueos realizados en una granularidad alta, por ejemplo en tablas, reducen la simultaneidad porque el bloqueo de toda una tabla restringe el acceso de otras transacciones a cualquier parte de la tabla. Sin embargo, produce una sobrecarga menor debido a que se mantienen menos bloqueos.
El Motor de base de datos a menudo se ve en la obligación de adquirir bloqueos en distintos niveles de granularidad para brindar una protección completa a un recurso. Este grupo de bloqueos en distintos niveles de granularidad se denomina jerarquía de bloqueos. Por ejemplo, para brindar protección completa a la lectura de un índice, probablemente sea necesario que una instancia del Motor de base de datos adquiera bloqueos compartidos en filas y bloqueos con intención compartida en las páginas y la tabla.
En la siguiente tabla se muestran los recursos que el Motor de base de datos puede bloquear.
Recurso |
Descripción |
---|---|
RID |
Identificador de fila que se utiliza para bloquear una sola fila de un montón. |
KEY |
Bloqueo de fila dentro de un índice que se utiliza para proteger intervalos de claves en transacciones serializables. |
PAGE |
Página de 8 kilobytes (KB) de una base de datos, como páginas de datos o de índices. |
EXTENT |
Grupo contiguo de ocho páginas, como páginas de datos o de índices. |
HoBT |
Montón o árbol b. Bloqueo que protege un árbol B (índice) o las páginas de datos del montón en una tabla que no posee un índice agrupado. |
TABLE |
Tabla completa, con todos los datos e índices. |
FILE |
Archivos de la base de datos. |
APPLICATION |
Recurso especificado por la aplicación. |
METADATA |
Bloqueos de metadatos. |
ALLOCATION_UNIT |
Unidad de asignación. |
DATABASE |
Base de datos completa. |
Nota
La opción LOCK_ESCALATION de ALTER TABLE puede afectar a los bloqueos HoBT y TABLE.