Sintomas
Quando utiliza uma nova instância do Microsoft SQL Server 2016 (ou 2017) ou uma instância do SQL Server 2016 (ou 2017) que foi atualizada a partir de uma versão anterior do SQL Server, deteta problemas de desempenho devido à elevada utilização da CPU. Além disso, se fizer uma consulta na tabela sys.dm_os_spinlock_stats , nota um valor elevado nas colunas giratórias das linhas SECURITY_CACHE (Cache de Segurança) e CMED_HASH_SET (Cache de Metadados) (em comparação com outras linhas na tabela). Por exemplo, nota os seguintes valores.
Causa
Este problema ocorre devido à concorrência de bloqueio giratório elevado num sistema altamente periódico. Nestes sistemas operativos, múltiplos tópicos CPU estão a competir por recursos e a girar durante um intervalo prolongado enquanto são executados periodicamente num ciclo para determinar se o recurso está disponível em vez de um rendimento imediato. Quando múltiplos tópicos CPU continuam a girar (num ciclo de tempo) para um recurso em vez de produzir, isto causa problemas de desempenho e utilização da CPU elevados.
Resolução
Este problema foi corrigido nas seguintes atualizações cumulativas para SQL Server:
Note Após aplicar a Atualização Cumulativa 2 (CU2) do SQL Server 2016, os nomes SECURITY_CACHEe CMED_HASH_SET são alterados para LOCK_RW_SECURITY_CACHEe LOCK_RW_CMED_HASH_SET, respetivamente. Após a aplicação da cu2, os valores são apresentados da seguinte forma.
Cada nova atualização cumulativa para o SQL Server contém todas as correções de segurança incluídas na atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Referências
Saiba mais sobre a terminologia que a Microsoft utiliza para descrever atualizações de software.
O documento branco Diagnosticar e Resolver a Contention Spinlock SQL Server aborda detalhadamente os problemas e resoluções relacionados com a conversão giradora.