Symptomer
Når der forekommer for mange samtidige indsættelser i den samme hash-bucket, eller ad hoc-SQL Server-plancachen når sin indtastningsgrænse på 160.036, opstår der alvorlig strid på SOS_CACHESTORE spinlock. I denne situation opstår der et højt CPU-forbrug i Microsoft SQL Server.
Årsag
Problemet opstår, når SQL Server-plancachen når indgangsgrænsen, og planer, der har lave omkostninger, skal smides ud for at kunne indsætte nye planer. Dette medfører stor strid for den SOS_CACHESTORE spinlock, der giver synkronisering for hashtabel-buckets i SQL Server-plancachen.
Løsning
Oplysninger om samlet opdatering
Problemet blev først rettet i følgende kumulative opdatering af SQL Server.
Hver ny samlet opdatering til SQL Server indeholder alle de hotfixes og alle de sikkerhedsrettelser, der var inkluderet i den tidligere akkumulerede opdatering. Se de seneste kumulative opdateringer til SQL Server:
Flere oplysninger
Plancachen har to begrænsninger: Den samlede størrelse og det samlede antal af alle planer. Begrænsningerne for størrelse og antal poster er beskrevet i følgende hvidbog:
Det maksimale antal poster, som en plancache kan indeholde, er fire gange antallet af buckets. Du kan kontrollere disse oplysninger ved at køre følgende forespørgsler:
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' )
På 64-bit systemer er antallet af buckets for SQL Server plancachen f.eks. 40.009. Derfor er det maksimale antal poster, der kan være i SQL Server-plancachen, 160.036.
Hvis du har en arbejdsbelastning, der bruger forskellige ad hoc-forespørgsler, kan denne grænse blive en flaskehals. Den ændring, der foretages med dette hotfix, løser denne situation. Når du har installeret dette hotfix og aktiveret ændringen ved hjælp af flaget til startsporing "-T 174", øges antallet af buckets til 160.001 på 64-bit systemer. Plancachen kan derefter maksimalt indeholde 640.004 planer.
Status
Microsoft har bekræftet, at problemet findes i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".