CORREÇÃO: Desempenho lento ocorre no SQL Server 2008 R2 ou no SQL Server 2012 se alto uso da CPU é observado com contenção sobre spinlock QUERY_EXEC_STATS

Traduções deste artigo Traduções deste artigo
ID do artigo: 2662301 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

A Microsoft distribui Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) ou Microsoft SQL Server 2012 correções em um arquivo para download. Como as correções são cumulativas, cada versão nova contém todos os hotfixes e todas as atualizações de segurança que foram incluídas com o anterior SQL Server 2008 R2 Service Pack 1 (SP1) ou Microsoft SQL Server 2012 lançamento da atualização.

Sintomas

Considere o seguinte cenário:
  • Instalar uma instância de Microsoft SQL Server 2008 R2 ou Microsoft SQL Server 2012 em um computador.
  • Instruções simultâneas semelhantes aos seguintes são executadas na instância:
    CREATE PROC p AS RETURN (
    query
    ); EXEC p;
    Ou executar uma consulta que contém o seguinte código:

    IF EXISTS(
    subquery
    );
  • O uso da CPU é consistentemente alto e os threads de trabalho estão no estado executável.
  • A contenção para o QUERY_EXEC_STATS spinlock é alta.
    A contagem de rotação, possíveis colisões e os valores de voltar para o QUERY_EXEC_STATS spinlock aumentar rapidamente.
    Observação Para obter mais informações sobre como monitorar o QUERY_EXEC_STATS spinlock, consulte a seção "Mais informações".

Neste cenário, pode ocorrer desempenho lento.

Causa

Esse problema porque ocorre SQL Server 2008 R2 ou SQL Server 2012 cria e destrói algumas estruturas de memória sobre estatísticas globais em vez de cache-los. Isso causa um afunilamento de desempenho.

Resolução

Informações da atualização cumulativa

SQL Server 2012

A correção para esse problema foi lançada primeiro na atualização cumulativa 1 para SQL Server 2012. Para obter mais informações sobre esse pacote de atualizações cumulativas, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2679368 Pacote de atualização cumulativa 1 para SQL Server 2012
Observação Como as compilações são cumulativas, cada novo lançamento de correções contém todos os hotfixes e lançamento de corrigir todas as correções de segurança que foram incluídas com o anterior 2012 de SQL Server. A Microsoft recomenda que você considere a aplicação a versão mais recente de correção que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2692828 2012 De SQL Server compilações lançadas após o lançamento do SQL Server 2012
Você deve aplicar um hotfix de SQL Server 2012 para uma instalação do SQL Server 2012.

Pacote de atualização cumulativa 5 para SQL Server 2008 R2 SP1

A correção para esse problema foi lançada em 5 de atualização cumulativa. Para obter mais informações sobre como obter esse pacote de atualização cumulativa para SQL Server 2008 R2 SP1, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2659694 Pacote de atualização cumulativa 5 para SQL Server 2008 R2 SP1
Observação Como as compilações são cumulativas, cada novo lançamento de correções contém todos os hotfixes e lançamento de corrigir todas as correções de segurança que foram incluídas com o anterior SQL Server 2008 R2 SP1. Recomendamos que você considere a aplicação a versão mais recente de correção que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2567616 SQL Server 2008 R2 compilações lançadas após o lançamento do SQL Server 2008 R2 SP1

Mais Informações

Para monitorar spinlock QUERY_EXEC_STATS , ajustar o atraso e o número de iterações conforme apropriado para seu ambiente no código a seguir e executá-lo:

SET NOCOUNT ON
CREATE TABLE #spins([Spinlock Name] varchar(50),Collisions numeric,Spins numeric,[Spins/Collision] float,[Sleep Time (ms)] numeric,Backoffs numeric, InsertTime datetime DEFAULT GETDATE())
DECLARE @counter int = 1
WHILE @counter < 10
      BEGIN
            INSERT INTO #spins ([Spinlock Name], Collisions, Spins, [Spins/Collision], [Sleep Time (ms)], Backoffs) EXECUTE ('DBCC SQLPERF (''SPINLOCKSTATS'') WITH NO_INFOMSGS')
            WAITFOR DELAY '00:00:05'
            SET @counter +=1
      END
SELECT * FROM #spins WHERE [Spinlock Name] = 'QUERY_EXEC_STATS' ORDER BY InsertTime
DROP TABLE #spins

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Propriedades

ID do artigo: 2662301 - Última revisão: quinta-feira, 12 de abril de 2012 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Standard
Palavras-chave: 
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2662301 KbMtpt
Tradução automática
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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 2662301

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com