Проблема
При использовании нового экземпляра Microsoft SQL Server 2016 (или 2017) или экземпляра SQL Server 2016 (или 2017), обновленного с более ранней версии SQL Server, возникают проблемы с производительностью из-за высокой загрузки ЦП. Кроме того, если запросить sys.dm_os_spinlock_stats таблицу, вы заметите высокое значение в столбце спинов для строк SECURITY_CACHE (кэш безопасности) и CMED_HASH_SET (кэш метаданных) (по сравнению с другими строками таблицы). Например, вы заметите следующие значения.
Причина
Эта проблема возникает из-за высокой конкуренции за блокировку вращения в системе с высокой степенью параллелизма. В этих операционных системах несколько потоков ЦП конкурируют за ресурсы и вращаются в течение длительного интервала, при этом они периодически выполняются в цикле, чтобы определить, доступен ли ресурс, вместо того, чтобы немедленно уступать его. Когда несколько потоков ЦП продолжают вращаться (в цикле while ) для ресурса, вместо того, чтобы передавать, это вызывает высокую загрузку ЦП и проблемы с производительностью.
Решение
Эта проблема устранена в следующих накопительных обновлениях для SQL Server:
- Накопительный пакет обновления 21 для SQL Server 2017
- Накопительный пакет обновления 2 для SQL Server 2016
Примечание После применения SQL Server 2016 накопительного пакета обновления 2 (CU2) имена SECURITY_CACHE и CMED_HASH_SET изменяются на LOCK_RW_SECURITY_CACHE и LOCK_RW_CMED_HASH_SET соответственно. После применения CU2 значения будут выглядеть следующим образом.
Сведения о накопительных обновлениях для SQL Server
Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Ознакомьтесь с последними накопительными пакетами обновления для SQL Server:
Последний накопительный пакет обновления для SQL Server 2017
Последний накопительный пакет обновления для SQL Server 2016
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Ссылки
Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.
В техническом документе "Диагностика и разрешение конкуренции Spinlock на SQL Server" подробно обсуждаются проблемы и решения, связанные с конкуренцией Spinlock.