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 с высокими значениями SECURITY_CACHE и CMED_HASH_SET

Причина

Эта проблема возникает из-за высокой конкуренции за блокировку вращения в системе с высокой степенью параллелизма. В этих операционных системах несколько потоков ЦП конкурируют за ресурсы и вращаются в течение длительного интервала, при этом они периодически выполняются в цикле, чтобы определить, доступен ли ресурс, вместо того, чтобы немедленно уступать его. Когда несколько потоков ЦП продолжают вращаться (в цикле while ) для ресурса, вместо того, чтобы передавать, это вызывает высокую загрузку ЦП и проблемы с производительностью.

Решение

Эта проблема устранена в следующих накопительных обновлениях для 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 содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Ознакомьтесь с последними накопительными пакетами обновления для SQL Server:

Последний накопительный пакет обновления для SQL Server 2017

Последний накопительный пакет обновления для SQL Server 2016

Состояние

Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».

Ссылки

Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.

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