Sümptomid
Oletame, et teil on palju statistikat ja tabeleid ning tabelid sisaldavad Microsoft SQL Server 2012 või SQL Server 2014 andmebaasi palju veerge. Kui käivitate mitu ad hoc päringut andmete toomiseks nendest tabelitest üheaegselt, võib ilmneda, et CMEMTHREAD ootab täitmist.
Lahendus
Kumulatiivse värskenduse teave
Probleem parandati esmakordselt SQL serveri järgmises koondvärskenduses.
Iga uus koondvärskenduses SQL Server sisaldab kõiki käigultparandused ja kõik turvaparandusi, mis kuulusid eelmise koondvärskenduse. Soovitame teil alla laadida ja installida kumulatiivseid värskendusi SQL serveri jaoks:
Lisateave
Kui kompileerite või kompileerite päringu SQL Server 2012, peab mootor hankima andmeid histogrammist. Peame teostama süsteemi tabeli skannimise ja seejärel laadima mällu või vahemällu kaasatud tabelite konkreetse histogrammi. Need süsteemi tabeli kirjed (statistika jaoks) on talletatud süsteemi tabeli vahemälu (CACHESTORE_SYSTEMROWSET). Mälu objekt, mida kasutatakse nende kirjete loomiseks vahemällu, pole sektsioonitud ja on globaalne. Seega, kui teil on selle toimingu käigus tehtud samaaegsed mälu eraldamine, kuvatakse CMEMTHREAD . See juhtub tavaliselt siis, kui esitate palju päringuid, mis nõuavad kompileerimist või ümberkompileerimist. See käigultparandus muudab üldmälus oleva objekti sektsioonimiseks nii, et samaaegne mälu eraldamine, mis kasutavad süsteemi tabeli vahemälu ei tekiks ja CMEMTHREAD ootab. Sarnase probleemi kohta leiate lisateavet teemast KB 3026082: PARANDUS: SOS_CACHESTORE spinlock Reahulk vahemälu on SQL Server 2012 või 2014 suur CPU kasutus.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.