Symptom
När du använder en ny instans av Microsoft SQL Server 2016 (eller 2017) eller en instans av SQL Server 2016 (eller 2017) som uppgraderas från en tidigare version av SQL Server får du prestanda problem på grund av hög CPU-användning. Om du sedan frågar sys.dm_os_spinlock_stats tabell kan du lägga till ett högt värde i kolumnen rotationer för SECURITY_CACHE (säkerhetscachen) och CMED_HASH_SET (metadatacache) rader (jämfört med andra rader i tabellen). Du kan till exempel Observera följande värden:
Orsak
Det här problemet beror på att det finns hög rotations lås i ett högsamtidigt system. I dessa operativ system konkurrerar flera CPU-trådar för resurser och spinner under en längre tid när de kör en loop med jämna mellanrum för att avgöra om resursen är tillgänglig i stället för att omedelbart lämna. När flera CPU-trådar kan snurra (i en while -slinga) för en resurs i stället för att bli, orsakar detta problem med hög CPU-användning och prestanda.
Lösning
Det här problemet har åtgärd ATS i följande kumulativa uppdateringar för SQL Server:
Obs! När du har tillämpat SQL Server 2016 Cumulative Update 2 (CU2) ändras SECURITY_CACHE och CMED_HASH_SET namnen till LOCK_RW_SECURITY_CACHE respektive LOCK_RW_CMED_HASH_SET. När CU2 har installerats ser värdena ut så här.
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den föregående kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
Status
Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".
Referenser
Lär dig mer om terminologin som Microsoft använder för att beskriva program varu uppdateringar. Det vita specialpapperet att diagnosticera och lösa spinlock-innehåll i SQL Server diskuterar problem och lösningar som är relaterade till spinlock-innehåll i detalj.