Ознаки
Якщо використовується новий екземпляр Microsoft SQL Server 2016 (або 2017) або екземпляр SQL Server 2016 (або 2017), оновлений із попередньої версії SQL Server, виникають проблеми з продуктивністю через високий рівень використання ЦП. Крім того, якщо запит sys.dm_os_spinlock_stats таблиці, ви помітите високе значення в стовпці лічильників для рядківSECURITY_CACHE (кеш безпеки) і CMED_HASH_SET (кеш метаданих) (порівняно з іншими рядками в таблиці). Наприклад, ви помітите наведені нижче значення.
Причина
Ця проблема виникає через високий лічильник блокування суперечки в дуже одночасній системі. У цих операційних системах кілька потоків ЦП конкурують за ресурси та обертаються протягом розширеного інтервалу, коли вони періодично запускаються в циклі, щоб визначити, чи доступний ресурс, а не відразу ж. Якщо кілька потоків ЦП продовжують обертатися (у циклі деякий час ) для ресурсу замість прибутку, це призводить до високих проблем із використанням ЦП та продуктивністю.
Спосіб вирішення
Цю проблему вирішено в сукупних пакетах оновлень для SQL Server:
Примітка. Після застосування SQL Server 2016 сукупний пакет оновлень 2 (CU2), імена SECURITY_CACHE та CMED_HASH_SET змінюються на LOCK_RW_SECURITY_CACHE та LOCK_RW_CMED_HASH_SET відповідно. Після застосування CU2 значення відображаються в такий спосіб:
Кожен новий сукупний пакет оновлень для SQL Server містить усі виправлення та всі виправлення системи безпеки, які входили в попередній сукупний пакет оновлень. Ознайомтеся з останніми сукупними оновленнями для SQL Server:
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "Стосується".
Посилання
Дізнайтеся про термінологію , яку корпорація Майкрософт використовує для опису оновлень програмного забезпечення.
Офіційний документ Діагностика та вирішення конфліктів Spinlock на SQL Server детально обговорює проблеми та вирішення, пов'язані з конфліктами на спінлоку.