Simptomi
Pretpostavimo da imate mnogo statistika i tablica, a tablice sadrže više stupaca u bazi podataka sustava Microsoft SQL Server 2012 ili SQL Server 2014. Kada izvršite mnoge ad hoc upite da biste dohvaćali podatke iz tih tablica istodobno, možda ćete doživjeti da CMEMTHREAD čeka tijekom izvršavanja.
Rješenje
Kumulativne informacije o ažuriranju
Problem je prvi put riješen u sljedećem kumulativnom ažuriranju sustava SQL Server.
Svako novo Kumulativno ažuriranje za SQL Server sadrži sve hitne popravke i sve sigurnosne ispravke uključene u prethodno Kumulativno ažuriranje. Preporučujemo da preuzmete i instalirate najnovija kumulativna ažuriranja za SQL Server:
Dodatne informacije
Kada kompilirate ili ponovno kompilirate upit u sustavu SQL Server 2012, motor mora dobiti ulazne podatke iz statističkog histograma. Moramo izvršiti skeniranje sistemske tablice, a zatim učitati specifičan histogram tablica koje su uključene u memoriju ili predmemoriranje. Te stavke sistemske tablice (za statistiku) pohranjene su u predmemoriji tablice sustava (CACHESTORE_SYSTEMROWSET). Memorijski objekt koji se koristi za stvaranje tih unosa u predmemoriji nije podijeljen i globalno je. Dakle, ako ste tijekom ove operacije izvršili istodobna alokacija memorije, naići ćete na Cmemthread na tom memorijskom objektu. To se obično događa kada pošaljete puno upita koji zahtijevaju kompilaciju ili ponovno kompilaciju. Tim se hitnim popravkom mijenja globalni memorijski objekt koji će biti podijeljen tako da istodobna alokacija memorije koja koristi cache sistemske tablice neće naići na argument, a Cmemthread će čekati. Dodatne informacije o sličnom problemu potražite u članku KB 3026082: popravak SOS_CACHESTORE: tvrdnja Spinlock-a u predmemoriji redaka tablice sustava uzrokuje visoku potrošnju procesora u sustavu SQL Server 2012 ili 2014.
Status
Microsoft je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na".