Проблемы
Если в одном хэш-контейнере происходит слишком много одновременных вставок или нерегламентированный кэш планов 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 планов.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".