Simptomai
Kai per daug vienu metu įdėtų intarpų pasitaiko tame pačiame maišos kaubulyje, arba specialusis "SQL Server" plano talpyklos pasiekia savo "160 036" įrašo limitą, įvyksta sunkus tvirtinimas SOS_CACHESTORE sukimosi užraktas. Esant tokiai situacijai, "Microsoft SQL Server" rodomas didelis CPU naudojimas.
Priežastis
Ši problema iškyla, kai SQL serverio plano talpyklos pasiekia jo įvedimo limitą ir planai, kuriuose yra mažos išlaidos, turi būti iškeltos, kad įterptumėte naujus planus. Tai sukelia sunkių tvirtinimu SOS_CACHESTORE sukimosi užraktas, kuris suteikia sinchronizavimo lentelės tikslinės atminties sritys "SQL Server" plano talpyklos.
Sprendimas
Kaupiamojo naujinimo informacija
Problema pirmą kartą buvo išspręsta šį kaupiamąjį naujinimą SQL serverio.
Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio kaupiamojo naujinimo. Peržiūrėkite naujausius kaupiamuosius SQL serverio naujinimus:
Daugiau informacijos
Plano talpykloje yra du limitai: bendras dydis ir bendras visų planų skaičius. Dydžio ir įrašų skaičiaus apribojimai paaiškinti šioje Baltojoje knygoje:
Suplanuokite talpyklos Internals
Maksimalus įrašų, kuriuos gali turėti plano talpykla, skaičius yra keturis kartus didesnis nei kibiro skaičius. Šią informaciją galite patvirtinti paleisdami šias užklausas:
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' )
Pvz., 64 bitų sistemose, "SQL Server" plano talpyklos kibirų skaičius yra "40 009". Todėl maksimalus įrašų, kurie gali būti tinkami SQL serverio plano talpykloje, skaičius yra 160 036.
Jei turite darbo krūvį, kuriam naudojamos skirtingos ad hoc užklausos, šis apribojimas gali tapti kliūtimi. Pakeitimas, kurį atlieka šios karštosios pataisos, išsprendžia šią situaciją. Įdiegus šias karštąsias pataisas ir įjungus paleisties sekimo vėliavėlę "-T 174", atminties kiekis padidinamas iki 160 001, 64 bitų sistemose. Tada plano talpykla gali turėti ne daugiau kaip "640 004" planų.
Statusą
"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.