Partilhar via


Opção locks

Use a opção bloqueios para definir o número máximo de bloqueios disponíveis, limitando a quantidade de memória que o Mecanismo de Banco de Dados usa para eles. A configuração padrão é 0, o que permite que o Mecanismo de Banco de Dados aloque e desaloque as estruturas de bloqueio de maneira dinâmica, com base na alteração dos requisitos do sistema.

Observação importanteImportante

Esse recurso será removido em uma versão futura de Microsoft SQL Server. Não utilize esse recurso em desenvolvimentos novos e planeje modificar, assim que possível, os aplicativos que atualmente o utilizam.

Quando o servidor é iniciado com bloqueios definido como 0, o gerenciador de bloqueio adquire memória suficiente do Mecanismo de Banco de Dados para um pool inicial de 2.500 estruturas de bloqueio. Conforme o pool de bloqueio é esgotado, memória adicional é adquirida para o pool.

Geralmente, se for necessária mais memória para o pool de bloqueio do que a que está disponível no pool de memória do Mecanismo de Banco de Dados, e se mais memória do computador estiver disponível (o limite de memória máxima do servidor não foi atingido), o Mecanismo de Banco de Dados alocará memória dinamicamente para satisfazer a solicitação de bloqueios. No entanto, se a alocação dessa memória provocar paginação no nível do sistema operacional (por exemplo, se outro aplicativo estiver executando no mesmo computador como uma instância do SQL Server e usando essa memória), mais espaço de bloqueio não será alocado. O pool de bloqueios dinâmico não adquire mais que 60 por cento da memória alocada para o Mecanismo de Banco de Dados. Depois que o pool de bloqueios atingiu 60 por cento da memória adquirida por uma instância do Mecanismo de Banco de Dados ou quando não houver mais memória disponível no computador as solicitações de bloqueios adicionais gerarão um erro.

Permitir que o SQL Server use bloqueios dinamicamente é a configuração recomendada. No entanto, você pode definir bloqueios e substituir a capacidade do SQL Server de alocar recursos de bloqueio dinamicamente. Quando a opção bloqueios está definida com um valor diferente de 0, o Mecanismo de Banco de Dados não pode alocar mais bloqueios do que o valor especificado em bloqueios. Aumente esse valor se o SQL Server exibir uma mensagem de que você excedeu o número de bloqueios disponíveis. Como cada bloqueio consome memória (96 bytes por bloqueio), aumentar esse valor pode exigir o aumento da quantidade de memória dedicada para o servidor.

A opção bloqueios também é afetada quando ocorre escalonamento de bloqueio. Quando a opção bloqueios está definida como 0, o escalonamento de bloqueio ocorre quando a memória usada pelas estruturas de bloqueio atuais atingir 40 por cento do pool de memória do Mecanismo de Banco de Dados. Quando a opção bloqueios não está definida como 0, o escalonamento de bloqueio ocorre quando o número de bloqueios atinge 40 por cento do valor especificado para bloqueios.

A opção bloqueios é uma opção avançada. Se você estiver usando o procedimento armazenado do sistema sp_configure para alterar a configuração, poderá alterar a opção bloqueios somente quando mostrar opções avançadas estiver definido como 1. A configuração entra em vigor depois que o servidor é reiniciado.