KB2662301-remediere: performanță lentă are loc în SQL Server 2008 R2 sau în SQL Server 2012 dacă se observă o utilizare mare a CPU cu o contentie în QUERY_EXEC_STATS spinlock

Microsoft distribuie Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) sau Microsoft SQL Server 2012 remedieri într-un singur fișier descărcabil. Deoarece remedierile sunt cumulative, fiecare lansare nouă conține toate remedierile rapide și toate actualizările de securitate care au fost incluse cu versiunea anterioară SQL Server 2008 R2 Service Pack 1 (SP1) sau Microsoft SQL Server 2012 Update release.

Simptome

Luați în considerare următorul scenariu:

  • Instalați o instanță a Microsoft SQL Server 2008 R2 sau Microsoft SQL Server 2012 pe un computer.

  • Declarațiile simultane care seamănă cu următoarele sunt executate în instanță:

    CREATE PROC p AS RETURN (
    query
    ); EXEC p;

    Sau, veți executa o interogare care conține următorul cod:

    IF EXISTS(
    subquery
    );
  • Utilizarea CPU este în mod constant mare, iar subiectele de lucru se află în starea runnable.

  • Disputa pentru QUERY_EXEC_STATS spinlock este mare. De exemplu, numărul de rotire, coliziunile posibile și valorile de returnare pentru QUERY_EXEC_STATS spinlock cresc rapid.Notă Pentru mai multe informații despre cum să monitorizați QUERY_EXEC_STATS spinlock, consultați secțiunea "mai multe informații".

În acest scenariu, poate apărea o performanță lentă.

Cauză

Această problemă, deoarece apare SQL Server 2008 R2 sau SQL Server 2012 creează și distruge unele structuri de memorie despre statisticile globale în loc să le memoreze în cache. Acest lucru determină o strangulare a performanței.

Rezolvare

Informații despre actualizarea cumulativă

SQL Server 2012

Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 1 pentru SQL Server 2012. Pentru mai multe informații despre acest pachet de actualizare cumulativă, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

2679368 Pachetul de actualizare cumulativă 1 pentru SQL Server 2012Notă Deoarece compilările sunt cumulative, fiecare nouă versiune de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu versiunea anterioară SQL Server 2012 fix release. Microsoft recomandă să luați în considerare aplicarea celei mai recente versiuni de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

2692828 SQL Server 2012 construiește care au fost lansate după ce s-a lansat SQL Server 2012 Trebuie să aplicați o remediere rapidă SQL Server 2012 la o instalare de SQL Server 2012.

Pachetul de actualizare cumulativă 5 pentru SQL Server 2008 R2 SP1

Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 5. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă pentru SQL Server 2008 R2 SP1, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

2659694 Pachetul de actualizare cumulativă 5 pentru SQL Server 2008 R2 SP1Notă Deoarece compilările sunt cumulative, fiecare nouă versiune de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în versiunea anterioară SQL Server 2008 R2 SP1. Vă recomandăm să luați în considerare aplicarea celei mai recente versiuni de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

2567616 SQL Server 2008 R2 construiește care au fost lansate după ce s-a lansat SQL Server 2008 R2 SP1

Mai multe informații

Pentru a monitoriza QUERY_EXEC_STATS spinlock, ajustați întârzierea și numărul de iterații, după cum este necesar pentru mediul dvs., în următorul cod, apoi rulează-l:

SET NOCOUNT ONCREATE TABLE #spins([Spinlock Name] varchar(50),Collisions numeric,Spins numeric,[Spins/Collision] float,[Sleep Time (ms)] numeric,Backoffs numeric, InsertTime datetime DEFAULT GETDATE())DECLARE @counter int = 1WHILE @counter < 10      BEGIN            INSERT INTO #spins ([Spinlock Name], Collisions, Spins, [Spins/Collision], [Sleep Time (ms)], Backoffs) EXECUTE ('DBCC SQLPERF (''SPINLOCKSTATS'') WITH NO_INFOMSGS')            WAITFOR DELAY '00:00:05'            SET @counter +=1      ENDSELECT * FROM #spins WHERE [Spinlock Name] = 'QUERY_EXEC_STATS' ORDER BY InsertTimeDROP TABLE #spins

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.

Aveți nevoie de ajutor suplimentar?

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă la Microsoft Insider

V-a fost de ajutor această informație?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×