KB3195888 - CORREÇÃO: o alto uso da CPU causa problemas de desempenho no SQL Server 2016 e 2017

Aplica-se A
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Express - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Web - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Standard on Windows SQL Server 2017 on Linux

Sintomas

Quando utiliza uma nova instância do Microsoft SQL Server 2016 (ou 2017) ou uma instância do SQL Server 2016 (ou 2017) atualizada a partir de uma versão anterior do SQL Server, depara-se com problemas de desempenho devido à elevada utilização da CPU. Além disso, se consultar a tabela sys.dm_os_spinlock_stats , notará um valor elevado na coluna giratórias para as linhas SECURITY_CACHE (Cache de Segurança) e CMED_HASH_SET (Cache de Metadados) (em comparação com outras linhas na tabela). Por exemplo, repare nos seguintes valores.

Estatísticas de spinlock com valores SECURITY_CACHE e CMED_HASH_SET elevados

Causa

Este problema ocorre devido à contenção de bloqueio de rotação elevada num sistema altamente simultâneo. Nesses sistemas operacionais, vários threads de CPU estão competindo por recursos e girando por um intervalo estendido enquanto são executados em um loop periodicamente para determinar se o recurso está disponível em vez de produzir imediatamente. Quando vários threads de CPU continuam girando (em um loop while ) para um recurso em vez de render, isso causa alto uso da CPU e problemas de desempenho.

Resolução

Esse problema foi corrigido nas seguintes atualizações cumulativas para SQL Server:

Observação Depois de aplicar SQL Server Atualização Cumulativa 2 (CU2) de 2016, os nomes SECURITY_CACHE e CMED_HASH_SET são alterados para LOCK_RW_SECURITY_CACHE e LOCK_RW_CMED_HASH_SET, respetivamente. Após a aplicação da CU2, os valores são apresentados da seguinte forma.

Estatísticas de spinlock após a atualização com linhas de cache de segurança e metadados renomeadas

Acerca das atualizações cumulativas para SQL Server

Cada nova atualização cumulativa para SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:

Atualização cumulativa mais recente para o SQL Server 2017

Atualização cumulativa mais recente para o SQL Server 2016

Situação

A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".

Referências

Saiba mais sobre a terminologia que a Microsoft utiliza para descrever as atualizações de software.

O white paper Diagnosing and Resolving Spinlock Contention on SQL Server discute problemas e resoluções relacionados à contenção de spinlock em detalhes.