Bloqueo dinámico

La utilización de bloqueos de bajo nivel, como los de fila, aumenta la simultaneidad reduciendo la probabilidad de que dos transacciones soliciten bloqueos de los mismos datos al mismo tiempo. También aumenta el número de bloqueos y los recursos necesarios para administrarlos. Los bloqueos de alto nivel de tabla o página producen una sobrecarga menor, pero a costa de reducir la simultaneidad.

Diagrama que muestra el costo frente a la granularidad

El SQL Server Database Engine (Motor de base de datos de SQL Server) de Microsoft utiliza una estrategia de bloqueo dinámico para determinar los bloqueos que son más eficaces. El Motor de base de datos determina automáticamente los bloqueos más apropiados cuando se ejecuta la consulta, basándose en las características del esquema y de la consulta. Por ejemplo, para reducir la sobrecarga de bloqueos, el optimizador puede decidir la realización de bloqueos de página en un índice al realizar un recorrido del índice.

El bloqueo dinámico presenta las ventajas siguientes:

  • Administración simplificada de la base de datos. Los administradores de bases de datos no tienen que preocuparse de ajustar los umbrales de extensión de bloqueo.

  • Mayor rendimiento. El Motor de base de datos minimiza la sobrecarga del sistema al utilizar los bloqueos apropiados para la tarea.

  • Los programadores de aplicaciones se pueden concentrar en la programación. El Motor de base de datos ajusta los bloqueos automáticamente.

En SQL Server 2008, el comportamiento de la extensión de bloqueo ha cambiado con la inserción de la opción LOCK_ESCALATION. Para obtener más información, vea la opción LOCK_ESCALATION de ALTER TABLE.