Simptomi
Pieņemsim, ka jums ir daudz statistikas un tabulu, un tabulās ir daudz kolonnu Microsoft SQL Server 2012 vai SQL Server 2014 datu bāzē. Kad veicat vairākus ekspromta vaicājumus, lai izgūtu datus no šīm tabulām vienlaikus, var rasties CMEMTHREAD nogaidiet izpildes laikā.
Risinājums
Kumulatīvās atjaunināšanas informācija
Šī problēma pirmo reizi tika izlabota tālāk sniegtajā SQL Server kumulatīvajā atjauninājumā.
Katrā jaunajā kumulatīvajā SQL Server atjauninājumā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Iesakām lejupielādēt un instalēt jaunākos SQL Server kumulatīvos atjauninājumus:
Papildinformācija
Kompilējot vai atkārtoti kompilējot vaicājumu SQL Server 2012, dzinējam ir jāiegūst izejvielas no statistikas histogrammas. Ir jāveic sistēmas tabulas skenēšana un pēc tam jāielādē specifiskās tabulu histogrammas, kas iesaistītas atmiņā vai kešatmiņā. Šie sistēmas tabulas ieraksti (statistikai) tiek glabāti sistēmas tabulas kešatmiņā (CACHESTORE_SYSTEMROWSET). Atmiņas objekts, kas tiek izmantots, lai izveidotu šos ierakstus kešatmiņā, nav sadalīts, un tas ir globāls. Tāpēc, ja jums ir vienlaicīga atmiņas piešķiršana, kas tiek veikta šīs darbības laikā, jūs sanāksiet CMEMTHREAD , kas gaidīs šajā atmiņas objektā. Tā parasti notiek, ja iesniedzat daudz vaicājumu, kuriem nepieciešama kompilēšana vai pārkompilēšana. Šis labojumfails maina globālo atmiņas objektu uz nodalījumu, lai vienlaicīgas atmiņas piešķires, kas izmanto sistēmas tabulas kešatmiņu, neredzēs saturu un CMEMTHREAD gaidīs. Papildinformāciju par līdzīgu problēmu skatiet rakstā KB 3026082: labojums: SOS_CACHESTORE spinlock apgalvojums sistēmas tabulas priekšraksts kešatmiņā izraisa lielu centrālā procesora lietojumu programmā SQL Server 2012 vai 2014.
Statusa
Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir norādīti sadaļā "attiecas uz".