Príznaky
Keď sa v rovnakom segmente hash vyskytuje príliš veľa súbežných vložených položiek alebo ak vyrovnávacia pamäť plánu ad hoc SQL servera dosiahne limit pre vstup 160 036, vyskytne sa závažná spokojnosť v SOS_CACHESTORE spinlock. V tejto situácii sa na serveri Microsoft SQL Server vyskytuje vysoká spotreba CPU.
Príčina
Tento problém sa vyskytuje, keď vyrovnávacia pamäť plánu SQL servera dosiahne limit vstupu a plány s nízkymi nákladmi sa musia vynechať s cieľom vložiť nové plány. Príčinou je ťažké tvrdenie pre SOS_CACHESTORE spinlock, ktoré poskytuje synchronizáciu pre segmenty hash tabuľky v cache plánu SQL servera.
Riešenie
Kumulatívna aktualizácia informácií
Tento problém bol najskôr vyriešený v nasledujúcej kumulatívnej aktualizácii SQL servera.
Každá nová Kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej kumulatívnej aktualizácie. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:
Ďalšie informácie
Vyrovnávacia pamäť plánu má dva limity: Celková veľkosť a celkový počet všetkých plánov. Limity veľkosti a počtu vstupov sú vysvetlené v tejto bielej knihe:
Plánovanie interných vyrovnávacej pamäte
Maximálny počet položiek, ktoré môžu mať vyrovnávaciu pamäť plánu, je štyrikrát vyšší než počet segmentov. Tieto informácie môžete overiť spustením nasledujúcich dotazov:
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' )
Napríklad na 64-bitových systémoch je počet segmentov pre vyrovnávaciu pamäť plánu SQL Server 40 009. Maximálny počet položiek, ktoré sa môžu prispôsobiť vo vyrovnávacej pamäti programu SQL Server, je preto 160 036.
Ak máte pracovnú záťaž, ktorá používa rôzne ad hoc dotazy, tento limit sa môže stať úzkym miestom. Táto situácia sa zaoberá zmenou, ktorú vykonala táto rýchla oprava. Po nainštalovaní tejto rýchlej opravy a povolení zmeny pomocou príznaku sledovania pri spustení (-T 174) sa počet segmentov zvýši na 160 001 v systémoch 64-bitov. Vyrovnávacia pamäť plánu vám potom môže uchovať maximálne 640 004 plánov.
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.