Příznaky
Pokud ve stejném kontejneru hodnot hash dojde k příliš velkému počtu souběžných vložení nebo mezipaměť plánu ad hoc SQL Server dosáhne limitu vstupu 160 036, dojde k závažným kolizím SOS_CACHESTORE. V této situaci dochází k vysokému využití procesoru v Microsoft SQL Server.
Příčina
K tomuto problému dochází, když mezipaměť plánu SQL Server dosáhne svého vstupního limitu a plány s nízkými náklady musí být vyřazeny, aby bylo možné vložit nové plány. To způsobuje velké kolize SOS_CACHESTORE, které zajišťuje synchronizaci kontejnerů tabulky hash mezipaměti plánu SQL Server.
Řešení
Informace o kumulativní aktualizaci
Problém byl poprvé opraven v následující kumulativní aktualizaci SQL Server.
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace pro SQL Server:
Další informace
Mezipaměť plánů má dva limity: celkovou velikost a celkový počet všech plánů. Omezení velikosti a počtu položek jsou vysvětlena v následujícím dokumentu white paper:
Interní služby mezipaměti plánu
Maximální počet položek, které může mezipaměť plánu uchovávat, je čtyřnásobek počtu kbelíků. Tyto informace můžete ověřit spuštěním následujících dotazů:
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' )
Například v 64bitových systémech je počet kontejnerů pro mezipaměť plánu SQL Server 40 009. Maximální počet položek, které se můžou vejít do mezipaměti plánu SQL Server, je proto 160 036.
Pokud máte úlohu, která používá různé ad hoc dotazy, může se tento limit stát kritickým bodem. Změna, která je provedena touto opravou hotfix řeší tuto situaci. Po instalaci této opravy hotfix a povolení změny pomocí příznaku trasování spuštění "-T 174", počet kbelíků se zvýší na 160 001 v 64bitových systémech. Mezipaměť plánů pak může obsahovat maximálně 640 004 plánů.
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.