Проблемы
Если в одном и том же сегменте хэша встречаются слишком много параллельных вставок, или нерегламентированный кэш плана SQL Server достиг максимального значения 160 036, возникает серьезное конфликты SOS_CACHESTOREной спин-блокировки. В этом случае в Microsoft SQL Server возникает высокая загрузка ЦП.
Причина
Эта проблема возникает, когда кэш планов SQL Server достигает предельного числа записей, и планы с низкими затратами необходимо исключить для вставки новых планов. Это вызывает тяжелую конкуренции для SOS_CACHESTOREной спин-блокировки, которая обеспечивает синхронизацию для сегментов таблицы хэша кэша планов SQL Server.
Решение
Совокупные сведения об обновлениях
Эта проблема впервые устранена в следующем накопительном обновлении SQL Server.
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Дополнительная информация
У кэша планов есть два ограничения: общий размер и общее количество планов. Ограничения на размер и количество операций описаны в следующем техническом документе:
Планирование внутренних целей кэша
Максимальное количество записей, которое может сохраниться в кэше планов, составляет четыре значения количества сегментов. Вы можете проверить эти данные, выполнив следующие запросы:
select name, type, buckets_count
from sys.dm_os_memory_cache_hash_tables
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
select name, type, pages_kb, entries_count
from sys.dm_os_memory_cache_counters
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
Например, в 64-разрядных системах количество сегментов для кэша планов SQL Server составляет 40 009. Таким образом, максимальное количество элементов, которые можно поместить в кэш планов SQL Server, составляет 160 036.
Если у вас есть рабочая нагрузка, использующая разные специальные запросы, это ограничение может стать узким местом. Изменения, вносимые этим исправлением, рассматриваются в этой ситуации. После установки этого исправления и включения изменения с помощью флага трассировки запуска "-T 174" число сегментов увеличивается до 160 001 в 64-разрядных системах. Затем кэш плана может хранить максимум 640 004 планов.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".