Contesa TempDB con 24 file fisici tempdb su scatola AMD Opteron 48 core


8

Ho appena ricevuto la seguente notifica relativa a un'istanza di SQL Server 2005. L'istanza ha un rapporto file core-tempdb di 2: 1 per un conteggio totale dei file tempdb di 24 file. La contesa non dovrebbe accadere: come potrei rilevare la fonte di questa contesa? TempDB e tutti gli altri database sono su memoria SAN tramite Ethernet da 10 GB. La SAN ha 46 unità SAS 10k configurate in un array RAID-60. Questo array è condiviso con diversi server VMWare e uno o due server Exchange.

Notifica da Idera SQL Diagnostic Manager:

08/11/2012 22:49:00 PM, Tempdb Contention (ms) su MGSQL01 è critico.

La contesa del latch tempdb è stata rilevata su MGSQL01. Il tempo di attesa totale rilevato è di 1782 millisecondi. Questa è un'indicazione che le prestazioni sono influenzate dalla contesa sulle mappe di allocazione in tempdb. Se questo è un problema regolare, può essere alleviato seguendo le migliori pratiche relative al conteggio dei file tempdb, alle dimensioni e al sottosistema IO.

Tempo di attesa PFS: 1782 ms Tempo di attesa GAM: 0 ms Tempo di attesa SGAM: 0 ms

Contenimento tempdb (ms): tempo di attesa corrente per le mappe di allocazione tempdb (GAM, SGAM e PFS), in millisecondi. Questo avviso può essere generato solo su istanze che eseguono SQL 2005 o versioni successive.


1
Heya Max, solo un paio di domande veloci. Di recente ho dovuto affrontare un problema simile. -È pagelatch_SH o pageiolatch_SH? Sono abbastanza sicuro che sia pagelatch_SH nel tuo caso, ma voglio solo esserne certo. -Hai utilizzato eventi estesi per tenere traccia delle query che stanno accumulando il maggior numero di tempi di attesa PAGELATCH_SH? Puoi anche pubblicare le tue prime 20 statistiche di attesa da SELECT * FROM SYS.DM_OS_WAIT_STATS ORDINA PER 3 Cosa ti dice Perfmon? L'azionamento TempDB sta effettivamente riscontrando una vera contesa IO? Spike nella SM?
Ali Razeghi,

2
Le attese sono su una pagina PFS in un determinato file o tutte? Tutti i file tempdb hanno le stesse dimensioni? Sai che tipo / dimensione degli oggetti vengono allocati in tempdb? Le tabelle temporanee vengono esplicitamente troncate e eliminate dal codice dell'app? Hai pensato di implementare trace flag 1118?
darin stretto


2
@MaxVernon: come regola generale, esegui sempre T1118. Non c'è davvero motivo di correre senza di essa
Thomas Kejser il

1
@maxvernon, ho +1 sul tuo elemento di connessione. Ben fatto.
Edward Dortland,

Risposte:


5

Il flag di traccia 1118 impone allocazioni di entità uniformi anziché allocazioni di pagine miste. Il flag di traccia viene comunemente utilizzato per facilitare la scalabilità di TEMPDB evitando SGAM e altri punti di conflitto di allocazione. Se si dispone di SQL Server 2008 o SQL Server 2005 e la correzione è stata applicata e si riscontra ancora una contesa TEMPDB, considerare il flag di traccia 1118 per ulteriore assistenza nella risoluzione della contesa.


1
Potresti spiegare, preferibilmente con un esempio, come il passaggio dall'allocazione condivisa a pagina singola all'allocazione di estensione dedicata risolverà la contesa PFS?
Edward Dortland,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.