Compartir a través de


Bloquear (SQL Server Compact)

Cuando varios usuarios o aplicaciones obtienen acceso a los mismos datos al mismo tiempo, el bloqueo les impide realizar cambios simultáneos en los datos. Los bloqueos se administran internamente mediante el Motor de base de datos de Microsoft SQL Server Compact. Los bloqueos se adquieren y liberan automáticamente en función de las acciones llevadas a cabo por el usuario.

Si no se utiliza el bloqueo y varios usuarios actualizan los mismos datos a la vez, es posible que la información de la base de datos deje de ser correcta desde un punto de vista lógico. En este caso, puede que las consultas ejecutadas en esos datos generen resultados inesperados.

Una aplicación nunca realiza una solicitud directa de un bloqueo. En lugar de ello, cuando se inicia una transacción y se ejecutan comandos del lenguaje de consulta, lenguaje de manipulación de datos (DML) o lenguaje de definición de datos (DDL) en la transacción, SQL Server Compact bloquea los recursos necesarios para ayudar a protegerlos con el nivel de aislamiento deseado.

SQL Server Compact determina de forma automática cuándo deben concederse y liberarse los bloqueos para todos los recursos. De manera predeterminada, el bloqueo de filas se utiliza para las páginas de datos y el de páginas para las páginas de índice. Para preservar los recursos del sistema, el administrador de bloqueos realiza automáticamente las extensiones de bloqueo cuando se supera un umbral configurable en el número de bloqueos de filas. El número máximo de bloqueos que puede asignarse por sesión en el administrador de bloqueos es de 262.143.

Puede cambiar la granularidad del bloqueo para algunas operaciones. Tenga cuidado, ya que cambiar la granularidad del bloqueo puede tener efectos negativos en la simultaneidad.

SQL Server Compact puede bloquear los siguientes recursos:

  • Filas

  • Páginas de datos o de índice de 4 KB

  • Esquemas de tablas

  • Tablas

  • Bases de datos

Los bloqueos realizados en una granularidad baja, por ejemplo en una fila, aumentan la simultaneidad, pero generan una mayor sobrecarga porque se deben mantener más bloqueos si se bloquea un gran número de filas. Los bloqueos realizados con una granularidad alta, por ejemplo en una tabla, reducen la simultaneidad porque el bloqueo de toda una tabla restringe el acceso de otras transacciones a cualquier parte de la tabla. Sin embargo, el bloqueo a este nivel disminuye la sobrecarga porque se mantienen menos bloqueos.

En esta sección

Tema

Descripción

Descripción de bloqueos

Explica los conceptos básicos del bloqueo en SQL Server Compact.

Mostrar la información de bloqueo

Describe la información mostrada en la vista sys.lock_information.

Personalizar los bloqueos

Describe métodos para personalizar el bloqueo.