KB3195888 — LABOJUMS: augsts centrālā procesora lietojums izraisa veiktspējas problēmas programmā SQL Server 2016 un 2017

Attiecas uz
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Express - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Web - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Standard on Windows SQL Server 2017 on Linux

Pazīmes

Ja izmantojat jaunu Microsoft SQL Server 2016 (vai 2017) instanci vai SQL Server 2016 (vai 2017) instanci, kas ir jaunināta no vecākas SQL Server versijas, rodas veiktspējas problēmas liela centrālā procesora lietojuma dēļ. Turklāt, ja veicat vaicājumu sys.dm_os_spinlock_stats tabulai, pamanīsit, ka griezienu kolonnā SECURITY_CACHE (drošības kešatmiņa) un CMED_HASH_SET (metadatu kešatmiņa) rindās (salīdzinājumā ar citām tabulas rindām) ir liela vērtība. Piemēram, ievērojat šādas vērtības.

Spinlock statistika ar augstām SECURITY_CACHE un CMED_HASH_SET vērtībām

Iemesls

Šī problēma rodas tāpēc, ka pastāv liels griešanās slēdzenes strīds ļoti vienlaicīgā sistēmā. Šajās operētājsistēmās vairāki CPU pavedieni konkurē par resursiem un griežas ilgākā intervālā, kamēr tie periodiski darbojas cilpā, lai noteiktu, vai resurss ir pieejams, nevis uzreiz dodas. Kad vairāki CPU pavedieni turpina griezties ( pa kādu cilpu ) resursam, nevis ienesīg, tas izraisa augstas CPU izmantošanas un veiktspējas problēmas.

Risinājums

Šī problēma tika novērsta šādos SQL Server kumulatīvajos atjauninājumos:

Piezīme Pēc SQL Server 2016. gada 2. kumulatīvā atjauninājuma (CU2) lietošanas SECURITY_CACHE un CMED_HASH_SET nosaukumi tiek mainīti attiecīgi uz LOCK_RW_SECURITY_CACHE un LOCK_RW_CMED_HASH_SET. Pēc CU2 lietošanas vērtības ir šādas.

SpinLock statistika pēc atjaunināšanas ar pārdēvētām drošības un metadatu kešatmiņas rindām

Par SQL Server kumulatīvajiem atjauninājumiem

Katrā jaunajā SQL Server kumulatīvajā atjauninājumā ir visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Skatiet jaunākos SQL Server kumulatīvos atjauninājumus:

Jaunākais kumulatīvais atjauninājums SQL Server 2017

Jaunākais kumulatīvais atjauninājums SQL Server 2016

Statuss

Microsoft apstiprināja, ka šī ir problēma Microsoft produktos, kas norādīti sadaļā "attiecas uz".

Atsauces

Uzziniet par terminoloģiju, ko Microsoft izmanto, lai aprakstītu programmatūras atjauninājumus.

Baltajā grāmatā Diagnosticēt un atrisināt Spinlock strīdu uz SQL Server detalizēti aplūkoti jautājumi un risinājumi, kas saistīti ar spinlock strīdu.