Sintomas
Quando você usa uma nova instância do Microsoft SQL Server 2016 (ou 2017) ou uma instância do SQL Server 2016 (ou 2017) que é atualizada de uma versão anterior do SQL Server, você tem problemas de desempenho devido ao alto uso da CPU. Além disso, se você consultar a tabela sys.dm_os_spinlock_stats, observará um valor alto na coluna de rotações 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, você observa os valores a seguir.
Causa
Esse problema ocorre devido à contenção de bloqueio de rotação alta em um 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 renderização, 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 CU2 (Atualização Cumulativa 2) de 2016, os nomes SECURITY_CACHEe CMED_HASH_SET serão alterados para LOCK_RW_SECURITY_CACHE e LOCK_RW_CMED_HASH_SET, respectivamente. Depois que CU2 é aplicado, os valores são exibidos da seguinte maneira.
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 na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes para SQL Server:
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever as atualizações de software.
O white paper Diagnosticing and Resolving Spinlock Contention on SQL Server discusses issues and resolutions that are related to spinlock contention in detail.