Compartir a través de


Granularidad y jerarquías de bloqueo

El MicrosoftSQL 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, Database Engine (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 Database Engine (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 Database Engine (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 Database Engine (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.