Compartilhar via


Bloqueando [SQL Server Compact]

Quando vários usuários ou aplicativos acessam os mesmos dados ao mesmo tempo, o bloqueio evita que eles façam alterações simultâneas nos dados. Os bloqueios são gerenciados internamente pelo Microsoft SQL Server Compact Mecanismo de Banco de Dados. Eles são automaticamente adquiridos e liberados com base em ações executadas pelo usuário.

Se o bloqueio não for usado e vários usuários atualizarem os mesmos dados ao mesmo tempo, os dados do banco de dados poderão se tornar logicamente incorretos. Se isso ocorrer, as consultas executadas nesses dados podem produzir resultados inesperados.

Um aplicativo nunca faz uma solicitação direta de bloqueio. Em vez disso, quando uma transação é iniciada e os comandos são executados em linguagem de consulta, DML (linguagem de manipulação de dados) ou DDL (linguagem de definição de dados) na transação, o SQL Server Compact bloqueia todos os recursos necessários para ajudar a protegê-los no nível de isolamento que você desejar.

O SQL Server Compact determina automaticamente quando os bloqueios devem ser concedidos e liberados para todos os recursos. Por padrão, o bloqueio de linha é usado para páginas de dados e o bloqueio de página é usado para páginas de índice. Para preservar recursos do sistema, o gerenciador de bloqueio executa automaticamente o escalonamento de bloqueios quando um limite configurável no número de bloqueios de linha é excedido. O número máximo de bloqueios que podem ser alocados por sessão no gerenciador de bloqueio é 262143.

Você pode optar por alterar a granularidade do bloqueio de algumas operações. Tenha cuidado, pois a alteração dessa granularidade pode ter efeitos negativos em simultaneidade.

O SQL Server Compact pode bloquear os seguintes recursos:

  • Linhas

  • Páginas de dados ou índice de 4 KB

  • Esquemas de tabela

  • Tabelas

  • Bancos de dados

O bloqueio com uma granularidade menor, como nas linhas, aumenta a simultaneidade, mas tem mais sobrecarga, pois será necessário manter mais bloqueios se muitas linhas forem bloqueadas. O bloqueio em uma granularidade maior, como nas tabelas, reduz a simultaneidade, pois o bloqueio de uma tabela completa restringe o acesso a qualquer parte da tabela por outras transações. No entanto, o bloqueio nesse nível tem uma sobrecarga menor, porque menos bloqueios são mantidos.

Nesta seção

Tópico

Descrição

Compreendendo o bloqueio

Explica os conceitos básicos de bloqueio no SQL Server Compact.

Exibindo informações de bloqueio

Descreve as informações de exibição retornadas pela exibição sys.lock_information.

Personalizando o bloqueio

Descreve maneiras de personalizar o bloqueio.