FIX: Rallentamento delle prestazioni in SQL Server 2008 R2 o nel 2012 SQL Server se si verifica elevato utilizzo della CPU può essere osservato con conflitti tramite il spinlock QUERY_EXEC_STATS

Traduzione articoli Traduzione articoli
Identificativo articolo: 2662301 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Microsoft distribuisce Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) o Microsoft SQL Server 2012 correzioni in un unico file scaricabile. Poiché le correzioni sono cumulative, ogni nuova versione contiene tutte le correzioni rapide e gli aggiornamenti della protezione che sono stati inclusi con il precedente SQL Server 2008 R2 Service Pack 1 (SP1) o Microsoft SQL Server 2012 rilascio dell'aggiornamento.

Sintomi

Si consideri il seguente scenario:
  • È possibile installare un'istanza di Microsoft SQL Server 2008 R2 o Microsoft SQL Server 2012 in un computer.
  • Nell'istanza vengono eseguite istruzioni concorrenti simili alle seguenti:
    CREATE PROC p AS RETURN (
    query
    ); EXEC p;
    In alternativa, si esegue una query che contiene il codice riportato di seguito:

    IF EXISTS(
    subquery
    );
  • L'utilizzo della CPU è costantemente elevato e i thread di lavoro sono in stato eseguibile.
  • La contesa per la QUERY_EXEC_STATS spinlock è elevato.
    Ad esempio, il conteggio della rotazione, i possibili conflitti e i valori di back-off per la QUERY_EXEC_STATS spinlock aumentare rapidamente.
    Nota Per ulteriori informazioni su come monitorare il QUERY_EXEC_STATS spinlock, vedere la sezione "Ulteriori informazioni".

In questo scenario, potrebbe verificarsi il rallentamento delle prestazioni.

Cause

Questo problema perché si verifica SQL Server 2008 R2 o SQL Server 2012 crea ed Elimina alcune strutture di memoria sulle statistiche globali anziché memorizzarli nella cache. Causando un collo di bottiglia delle prestazioni.

Risoluzione

Informazioni sull'aggiornamento cumulativo

SQL Server 2012

Innanzitutto, la correzione di questo problema è stata rilasciata nell'aggiornamento cumulativo 1 per SQL Server 2012. Per ulteriori informazioni su questo pacchetto di aggiornamento cumulativo, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
2679368 Pacchetto di aggiornamento cumulativo 1 per SQL Server 2012
Nota Poiché le versioni sono cumulative, ogni nuova versione contiene tutte le correzioni rapide e rilascio delle correzioni per tutte le correzioni fornite con il precedente 2012 SQL Server. Si consiglia di considerare l'ipotesi di applicare la versione più recente contenente tale hotfix. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
2692828 Il 2012 SQL Server versioni rilasciate dopo il rilascio di SQL Server 2012
È necessario applicare un aggiornamento rapido SQL Server 2012 a un'installazione di SQL Server 2012.

Pacchetto di aggiornamento cumulativo 5 per SQL Server 2008 R2 SP1

La correzione di questo problema è stata rilasciata prima 5 aggiornamento cumulativo. Per ulteriori informazioni su come ottenere il pacchetto di aggiornamento cumulativo per SQL Server 2008 R2 SP1, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
2659694 Pacchetto di aggiornamento cumulativo 5 per SQL Server 2008 R2 SP1
Nota Poiché le versioni sono cumulative, ogni nuova versione contiene tutte le correzioni rapide e rilascio delle correzioni per tutte le correzioni fornite con il precedente SQL Server 2008 R2 SP1. Si consiglia di considerare l'ipotesi di applicare la versione più recente contenente tale hotfix. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
2567616 Il SQL Server 2008 R2 versioni rilasciate dopo il rilascio di SQL Server 2008 R2 SP1

Informazioni

Per monitorare il spinlock QUERY_EXEC_STATS , modificare il ritardo e il numero di iterazioni a seconda dell'ambiente nel codice seguente e quindi eseguirlo:

SET NOCOUNT ON
CREATE 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 = 1
WHILE @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
      END
SELECT * FROM #spins WHERE [Spinlock Name] = 'QUERY_EXEC_STATS' ORDER BY InsertTime
DROP TABLE #spins

Status

Microsoft ha confermato che si tratta di un problema con i prodotti elencati nella sezione "Si applica a".

Proprietà

Identificativo articolo: 2662301 - Ultima modifica: giovedì 12 aprile 2012 - Revisione: 1.0
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Standard
Chiavi: 
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2662301 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 2662301
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com