Príznaky
Keď sa v rovnakom kontajneri hash vyskytuje príliš veľa súbežných vkladaní alebo vyrovnávacia pamäť plánu ad hoc SQL Server dosiahne vstupný limit 160 036, vyskytne sa vážne tvrdenie o SOS_CACHESTORE spinlock. V takomto prípade dochádza k vysokému vyťaženiu procesora v microsoft SQL Server.
Príčina
Tento problém sa vyskytuje, keď vyrovnávacia pamäť plánu SQL Server dosiahne limit počtu položiek a plány s nízkymi nákladmi musia byť vyradené, aby sa mohli vložiť nové plány. To spôsobuje veľké tvrdenie pre SOS_CACHESTORE spinlock, ktorý poskytuje synchronizáciu pre kontajnery tabuľky hash vyrovnávacej pamäte SQL Server plánu.
Riešenie
Informácie o kumulatívnej aktualizácii
Problém bol najprv opravený v nasledujúcej kumulatívnej aktualizácii SQL Server.
Každá nová kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchle opravy a všetky opravy zabezpečenia, ktoré boli zahrnuté do 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á dve obmedzenia: celkovú veľkosť a celkový počet všetkých plánov. Obmedzenia veľkosti a počtu položiek sú vysvetlené v nasledujúcej bielej knihe:
Interne naplánovať vyrovnávaciu pamäť
Maximálny počet položiek, ktoré môže vyrovnávacia pamäť plánu obsahovať, je štvornásobok počtu sektorov. 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 v 64-bitových systémoch je počet sektorov pre vyrovnávaciu pamäť plánu SQL Server 40 009. Maximálny počet položiek, ktoré sa zmestia do vyrovnávacej pamäte SQL Server plánu, je preto 160 036.
Ak máte vyťaženie, ktoré používa rôzne dotazy ad hoc, tento limit sa môže stať kritickým miestom. Táto situácia sa týka zmeny vykonanej touto rýchlou opravou. Po nainštalovaní tejto rýchlej opravy a zapnutí zmeny pomocou príznaku sledovania spustenia "-T 174" sa počet sektorov v 64-bitových systémoch zvýši na 160 001. Vyrovnávacia pamäť plánu potom môže mať 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.