Escalonamento de bloqueios
O escalonamento de bloqueios é o processo de conversão de muitos bloqueios refinados, como uma linha, em bloqueios menos grosseiros, como uma tabela. O uso do escalonamento de bloqueios reduz a sobrecarga do sistema.
O Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) faz o escalonamento automático de bloqueios de linhas e de páginas em bloqueios de tabelas quando uma transação excede seu limite de escalonamento. No SQL Server Compact 3.5, o escalonamento de bloqueios pode ocorrer de linha para tabela ou de página para tabela, mas não de linha para página. Quando o escalonamento ocorre em um nível de tabela, nenhuma solicitação pode ser feita de qualquer bloqueio inferior a uma tabela.
Por exemplo, quando uma transação opera nas linhas de uma tabela, o SQL Server Compact 3.5 obtém automaticamente bloqueios naquelas linhas afetadas e coloca os bloqueios de nível superior pretendidos nas páginas e tabelas que contêm essas linhas. Todas as páginas de índice relevantes também são bloqueadas. Quando o número de bloqueios mantidos pela transação excede seu limite, o SQL Server Compact 3.5 tenta alterar o bloqueio pretendido na tabela para um bloqueio mais seguro. Por exemplo, um bloqueio exclusivo (IX) pretendido poderia ser alterado para um bloqueio exclusivo (X). Depois de obter o bloqueio mais seguro, todos os bloqueios de nível de página e linha mantidos pela transação na tabela são liberados.
O escalonamento de bloqueios ocorre por tabela quando uma solicitação de bloqueio faz com que um limite de escalonamento de bloqueios específico seja excedido. Todos os bloqueios de nível de subtabela, independentemente do tipo, são contados até o limite. O limite de escalonamento só deve ser considerado como um valor aproximado porque todos os bloqueios requeridos pelas operações internas são contatos até esse limite. O escalonamento pode ocorrer antes do esperado.
Se o escalonamento não for possível devido a um conflito de bloqueios, a transação continuará e poderá tentar o escalonamento novamente mais tarde.
Dica
Os bloqueios pretendidos, os bloqueios de linhas e os bloqueios de páginas são todos considerados na contagem de escalonamento, a menos que eles sejam bloqueios de tabelas temporários. Quando o total de bloqueios pretendidos, de bloqueios de linhas e de bloqueios de páginas em uma tabela específica excede o limite de escalonamento, o escalonamento ocorre.
Você pode controlar o escalonamento de bloqueios por sessão configurando o limite de escalonamento de bloqueios, como mostra o seguinte exemplo de código:
SET LOCK_ESCALATION 1000;
Esta configuração afeta todas as tabelas no banco de dados. O padrão é 100.
Consulte também
Conceitos
Compreendendo o bloqueio
Exibindo informações de bloqueio
Personalizando o bloqueio