CORRECÇÃO: Problemas de desempenho ocorrem quando aumenta a actividade de bloqueio de base de dados no SQL Server

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 2926217
Importante
Por predefinição, Service Pack 1 para o SQL Server 2014 e Service Pack 3 para SQL Server 2012 incluem esta correcção e não tem de adicionar quaisquer sinalizadores de rastreio para activar a correcção. Para activar a correcção depois de instalar uma das actualizações cumulativas contidas na secção Resolução, tem de iniciar o Microsoft SQL Server, adicionando o sinalizador de rastreio 1236 aos parâmetros de arranque.
Sintomas
Suponha que executa uma instância de Microsoft SQL Server 2014, 2012 do SQL Server, SQL Server 2008 ou SQL Server 2008 R2 num computador que contém o número de processadores. Quando o número de bloqueios (tipo de recurso = base de dados) para uma base de dados específica excede um determinado limiar, detectar os seguintes problemas de desempenho:
  • Ocorrem valores elevados para a contagem de spinlock LOCK_HASH .

    Nota Consulte a secção "Mais informação" para obter informações sobre como monitorizar este spinlock.
  • Consultas ou operações que necessitem de bloqueios de base de dados demoram muito tempo a ser concluída. Por exemplo, poderá detectar os atrasos de desempenho seguintes:
    • Inícios de sessão do SQL Server
    • Consultas de servidor ligado
    • sp_reset_connection
    • Transacções
Nota Para localizar a lista de bloqueios (tipo de recurso = base de dados) numa determinada base de dados, consulte a secção "Mais informação". O valor de limiar varia consoante o ambiente.
Resolução

Informações de actualização cumulativa

O problema foi corrigido pela primeira vez na actualização cumulativa do SQL Server.

Actualização cumulativa 13 para o SQL Server 2008 R2 SP2

Actualização cumulativa 17 para o SQL Server 2008 SP3

Actualização cumulativa 1 para o SQL Server 2014

Actualização cumulativa 9 para SQL Server 2012 SP1

Acerca de actualizações cumulativas para o SQL Server

Cada nova actualização cumulativa para o SQL Server contém todas as correcções e todas as correcções de segurança que foram incluídas na anterior actualização cumulativa. Verifique as actualizações cumulativas mais recentes para o SQL Server:

Informações sobre correção

Existe uma correção suportada pela Microsoft. No entanto, esta correção destina-se apenas a corrigir o problema descrito neste artigo. Aplique esta correcção apenas em sistemas que tenham este problema específico.

Se a correção está disponível para transferência, existe uma secção de "Transferência de Correção Disponível" na parte superior deste artigo da Base de Dados de Conhecimento. Se esta secção não for apresentado, submeta um pedido de suporte e serviço de cliente Microsoft para obter a correcção.

Nota Se ocorrerem problemas adicionais ou se for necessária a resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos de normais do suporte serão aplicados a perguntas de suporte adicionais e os problemas incluídos nesta correcção específica. Para uma lista completa dos números de telefone de suporte e serviço de cliente da Microsoft ou para criar um pedido de assistência separado, visite o seguinte site da Microsoft: Nota O formulário "Transferência de correcção disponível" apresenta os idiomas nos quais a correcção está disponível. Se não visualizar o seu idioma, é porque uma correcção não está disponível para esse idioma.

Ponto Da Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".
Mais Informação
Quando uma aplicação efectua uma ligação ao SQL Server, primeiro estabelece um contexto de base de dados. Por predefinição, a ligação irá tentar obter um bloqueio de base de dados em modo SH. O bloqueio de Base de dados SH será liberado quando a ligação está parada ou contexto de base de dados é alterado durante a duração da ligação. Se tiver muitas ligações activas que utilizem o mesmo contexto de base de dados, pode ter muitos bloqueios do tipo de recurso base de dados para essa base de dados específica.

No computador que tenha 16 ou mais CPUs, apenas os objectos tabela utilizam um esquema de bloqueio com partições. No entanto, não estão particionados os bloqueios de base de dados. Assim, quanto maior for o número de base de dados bloqueia, mais tempo que demora para o SQL Server obter um bloqueio na base de dados. A maioria das aplicações não detectar quaisquer problemas que são causados por esta estrutura. Mas, logo que o número exceder um determinado limiar, o trabalho adicional e a hora é necessária para obter o bloqueio. Embora o custo é apenas micro segundos para cada adicionais do bloqueio, o tempo total pode aumentar rapidamente, uma vez que os recipientes de hash de bloqueio estão protegidos através da utilização de um spinlock. Isto faz com que os ciclos de CPU adicionais e aguarda trabalhadores adicionais obter o bloqueio.

Esta correcção introduz a base de dados de bloqueio de criação de partições quando o sinalizador de rastreio T1236 está activado no arranque. O bloqueio de base de dados de criação de partições mantém a profundidade da lista de bloqueio gerível em cada partição local. Isto optimiza significativamente o caminho de acesso que é utilizado para obter um bloqueio de base de dados .

Para monitorizar o spinlock LOCK_HASH , pode utilizar a seguinte consulta.
SET NOCOUNT ONCREATE TABLE #spinlock_stats([CaptureTime] datetime,[name] nvarchar(512),[collisions] bigint,[spins] bigint,[spins_per_collision] real,[sleep_time] bigint,[backoffs] int)DECLARE @counter int = 1WHILE @counter < 100      BEGIN            INSERT INTO #spinlock_stats SELECT GETDATE() as "CaptureTime" , * FROM sys.dm_os_spinlock_stats WHERE [name] = 'LOCK_HASH'            WAITFOR DELAY '00:00:05'            SET @counter +=1      ENDSELECT * FROM #spinlock_stats ORDER BY [CaptureTime]DROP TABLE #spinlock_stats
Para mais informações sobre como diagnosticar e resolver contenção de spinlock no SQL Server, vá para o seguinte documento:

Nota Apesar deste documento destina-se de SQL Server 2008 R2, é aplicável a 2012 do SQL Server a informação.
Referências
Para mais informações sobre sinalizadores de rastreio de 2012 do SQL Server, vá para o seguinte Web site da TechNet:


Para mais informações sobre como localizar o número de bloqueios de base de dados no utilizador por base de dados, utilize a seguinte consulta para calcular este valor:
select  Resource_database_id, resource_type, request_mode, request_status,  count (*) 'LockCount' from sys.dm_tran_locks group by  Resource_database_id, resource_type, request_mode, request_status


Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 2926217 - Última Revisão: 12/03/2015 16:15:00 - Revisão: 7.0

Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2008 Service Pack 3, Microsoft SQL Server 2008 R2 Service Pack 2

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbautohotfix kbhotfixserver kbmt KB2926217 KbMtpt
Comentários