Extensión de bloqueo
La extensión de bloqueo es el proceso de convertir varios bloqueos concretos, como una fila, en unos pocos bloqueos generales, como una tabla. El uso de la extensión de bloqueo reduce la sobrecarga del sistema.
Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) extiende automáticamente los bloqueos de fila y de página a bloqueos de tabla cuando una transacción supera su umbral de extensión. En SQL Server Compact 3.5, la extensión de bloqueo puede producirse de fila a tabla o de página a tabla, pero no de fila a página. Cuando se produce la extensión a nivel de tabla, no se puede realizar ninguna solicitud para bloqueos menores que una tabla.
Por ejemplo, cuando una transacción opera sobre las filas de una tabla, SQL Server Compact 3.5 adquiere automáticamente bloqueos en aquellas filas afectadas y coloca bloqueos preventivos de nivel superior en las páginas y la tabla que contienen esas filas. Además, también se bloquean todas las páginas de índice relevantes. Cuando el número de bloqueos de la transacción supera su umbral, SQL Server Compact 3.5 intenta cambiar el bloqueo preventivo de la tabla por un bloqueo más estricto. Por ejemplo, un bloqueo de intención exclusiva (IX) se transformaría en un bloqueo exclusivo (X). Tras lograr un bloqueo más fuerte, todos los bloqueos a nivel de página y de fila que la transacción ha realizado sobre la tabla se liberan.
La extensión de bloqueo se realiza por tablas cuando una solicitud de bloqueo hace que se supere un umbral de extensión de bloqueo específico. Todos los bloqueos de nivel inferior a una tabla, independientemente de su tipo, se contabilizan para el umbral. El umbral de extensión de bloqueo debe considerarse únicamente un valor aproximado, ya que los bloqueos necesarios para realizar operaciones internas también se contabilizan para el umbral. La extensión puede tener lugar antes de lo previsto.
Si no es posible realizar la extensión debido a un conflicto de bloqueos, la transacción seguirá adelante e intentará realizar la extensión más tarde.
Nota
Los bloqueos de intención, los bloqueos de fila y los bloqueos de página se contabilizan para el umbral de extensión, a menos que sean bloqueos de tabla temporal. La extensión se produce cuando el total de bloqueos de intención, bloqueos de fila y bloqueos de página de una tabla específica superan el umbral de extensión.
Puede controlar la extensión de bloqueo por sesión estableciendo el umbral de extensión de bloqueo tal y como muestra el siguiente ejemplo de código:
SET LOCK_ESCALATION 1000;
Este ajuste afecta a todas las tablas de la base de datos. El valor predeterminado es 100.
Vea también
Conceptos
Descripción de bloqueos
Mostrar la información de bloqueo
Personalizar los bloqueos