KB3195888 – КОРЕКЦИЯ: Прекомерното използване на ЦП причинява проблеми с производителността през SQL Server 2016 и 2017 г.

Отнася се за
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

Симптоми

Когато използвате или нов екземпляр на Microsoft SQL Server 2016 (или 2017), или екземпляр на SQL Server 2016 (или 2017), който е надстроен от по-стара версия на SQL Server, имате проблеми с производителността поради прекомерно натоварване на процесора. Освен това, ако направите заявка към таблицата sys.dm_os_spinlock_stats , ще забележите висока стойност в колоната със завои за редовете SECURITY_CACHE (кеш за защита) и CMED_HASH_SET (кеш за метаданни) (в сравнение с други редове в таблицата). Например ще забележите следните стойности:

Spinlock statistics with high SECURITY_CACHE and CMED_HASH_SET values

Причина

Този проблем възниква поради силно състезание за заключване на центрофонажа в силно едновременна система. В тези операционни системи няколко нишки на процесора се конкурират за ресурси и се въртят за продължителен период от време, докато се изпълняват в цикъл периодично, за да определят дали ресурсът е наличен, вместо да отстъпят веднага. Когато няколко нишки на ЦП продължават да се въртят (в период от време ) за ресурс, вместо да отстъпват, това води до проблеми с високото използване на процесора и производителността.

Решение

Този проблем е коригиран в следните кумулативни актуализации за SQL Server:

Забележка След като приложите сборна актуализация 2 (CU2) SQL Server 2016 г., имената на SECURITY_CACHE и CMED_HASH_SET се променят съответно на LOCK_RW_SECURITY_CACHE и LOCK_RW_CMED_HASH_SET. След като се приложи CU2, стойностите се показват по следния начин.

Статистика на Spinlock след актуализацията с преименувани редове за кеша за защита и метаданни

За кумулативните актуализации за SQL Server

Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната кумулативна актуализация. Прегледайте последните кумулативни актуализации за SQL Server:

Последна сборна актуализация за SQL Server 2017

Последна сборна актуализация за SQL Server 2016

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.

Справки

Научете повече относно терминологията, която Microsoft използва за описване на актуализациите на софтуера.

Техническият документ "Диагностициране и разрешаване на състезанието за Spinlock" на SQL Server обсъжда подробно проблемите и решенията, които са свързани със състезанието за Spinlock.