Simptome
Atunci când apar prea multe inserturi simultane în aceeași găleată hash, sau memoria cache a planului de SQL Server ad-hoc ajunge la limita de intrare de 160.036, se produce o constrângere severă la SOS_CACHESTORE spinlock. În această situație, se produce o utilizare mare CPU în Microsoft SQL Server.
Cauză
Problema apare atunci când memoria cache a planului SQL Server ajunge la limita de intrare, iar planurile care au costuri reduse trebuie evacuate pentru a insera planuri noi. Acest lucru provoacă o dispută grea pentru SOS_CACHESTORE spinlock care oferă sincronizarea pentru gălețile de tabel hash din memoria cache a planului SQL Server.
Rezolvare
Informații despre actualizarea cumulativă
Problema a fost remediată pentru prima dată în următoarea actualizare cumulativă de SQL Server.
Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Mai multe informații
Memoria cache a planului are două limite: dimensiunea totală și numărul total de planuri. Limitele de dimensiune și de număr de intrări sunt explicate în următoarea hârtie albă:
Planificați internarea memoriei cache
Numărul maxim de intrări pe care le poate stoca un cache de plan este de patru ori numărul de găleți. Puteți verifica aceste informații efectuând următoarele interogări:
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' )
De exemplu, pe sistemele 64-bit, numărul de găleți pentru memoria cache a planului SQL Server este 40.009. Prin urmare, numărul maxim de intrări care se pot încadra în memoria cache a planului SQL Server este 160.036.
Dacă aveți un volum de lucru care utilizează interogări ad-hoc diferite, această limită poate deveni o strangulare. Modificarea efectuată de această remediere rapidă abordează această situație. După ce instalați această remediere rapidă și activați modificarea utilizând semnalizatorul de urmărire de pornire "-T 174", numărul de găleți este majorat la 160.001 pe sistemele 64-bit. Memoria cache a planului poate să dețină un maxim de planuri 640.004.
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.