Příznaky
Když ve stejném zatřiďovacím bloku dojde k příliš velkému počtu souběžných vložení nebo když mezipaměť plánu ad hoc SQL serveru dosáhne svého limitu pro zadání 160 036, dojde k výraznému spinlock na SOS_CACHESTORE. V této situaci dochází k vysokému využití procesoru serveru Microsoft SQL Server.
Příčina
K tomuto problému dochází, když mezipaměť plánu SQL serveru dosáhne limitu vstupu a pokud chcete vložit nové plány, musí být vyřazené plány, které mají nízké náklady. To způsobuje velké množství obsahu pro SOS_CACHESTORE spinlock, které poskytuje synchronizaci pro zatřiďovací intervaly v mezipaměti plánu SQL serveru.
Řešení
Informace o kumulativní aktualizaci
Tento problém byl poprvé opraven následující kumulativní aktualizací SQL serveru.
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 SQL serveru:
Další informace
Mezipaměť plánu má dvě omezení: celkovou velikost a celkový počet všech plánů. Limity velikosti a počtu položek jsou vysvětleny v následujícím dokumentu White Paper:
Maximální počet položek, které může mezipaměť plánu uchovávat, je čtyřikrát. 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 systémech 64 jsou počet bloků pro mezipaměť SQL Server plánu 40 009. Proto je maximální počet položek, které se vejdou do mezipaměti plánu systému SQL Server, 160 036.
Pokud máte pracovní vytížení, které používá různé dotazy ad hoc, může se tento limit lišit. Změny provedené touto opravou hotfix řeší tuto situaci. Po instalaci této opravy hotfix a povolení její změny pomocí příznaku trasování po spuštění "-T 174" se počet intervalů v systémech 64 zvýší na 160 001. Mezipaměť plánu je potom schopná získat 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.