Симптоми
Когато твърде много едновременни вмъквания се появяват в една и съща кофа за хеширане или кешът за план на SQL Server достигне ограничението си за влизане в 160 036, възникват сериозни твърдения за SOS_CACHESTORE spinlock. В този случай в Microsoft SQL Server възниква високо потребление на ПРОЦЕСОРА.
Причина
Проблемът възниква, когато кешът за план на SQL Server достигне ограничението си за влизане, а плановете, които имат ниски разходи, трябва да бъдат изгонени, за да се вмъкнат нови планове. Това води до тежък задоволство за SOS_CACHESTORE spinlock, който предоставя синхронизация за картончетата за хеширане на таблици на кеша за план на 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.
Ако имате натоварена работа, която използва различни ad hoc заявки, това ограничение може да се превърне в пречка. Промяната, направена от тази спешна корекция, се отнася за ситуацията. След като инсталирате тази спешна корекция и разрешите промяната с помощта на флага за проследяващо стартиране "-T 174," броят на картончетата е увеличен на 160 001 в системите на 64-битова версия. След това кешът за план е в състояние да задържи максимум планове за 640 004.
Състоянието
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".