Utilizzo di SQL Profiler su un database in produzione


28

Come sviluppatore, utilizzo SQL Profiler abbastanza spesso. È un buon strumento di debug, sia per tenere traccia di ciò che sta facendo il mio codice sia per analizzare i problemi di prestazioni.

Ma l'ho sempre usato nel mio ambiente di sviluppo e in modo molto controllato.

  • Avvia la mia applicazione e portala in uno stato specifico
  • Inizia una traccia sul profiler
  • Eseguire una sequenza specifica di azioni sulla mia applicazione
  • Interrompere la traccia ed esaminare i risultati.

SQL Profiler può essere praticamente utilizzato in un ambiente di produzione?

La mia prima preoccupazione è che degraderebbe le prestazioni.

La mia seconda preoccupazione è che, poiché è in produzione, non stai innescando le azioni interessanti stesse. Dovresti lasciare il profiler in esecuzione per un lungo periodo, quindi analizzare i risultati. Il set di risultati diventerebbe troppo ingombrante? (Occupare troppo spazio su disco ed essere troppo difficile da interrogare).

Qualcuno usa SQL Profiler in produzione?


1
Se sai cosa stai cercando, potresti non aver nemmeno bisogno di tracciare, ad esempio dba.stackexchange.com/questions/756/…
Gaius

Risposte:


19

L'uso di Sql Server Profiler (strumento GUI) per tracciare un server di produzione non è una buona idea. Ma dipende dal carico. Utilizzare la traccia sql sul lato server (vedere le procedure sp_trace_XXX ) anziché. Inoltre ho trovato articoli:

Impatto sulle prestazioni: traccia Profiler vs. traccia SQL lato server ,

Automatizzare la traccia lato server in SQL Server

Evitare di causare problemi con Profiler

forse sarà interessato e utile.

Prenota online dice:

  • Esegui Profiler in remoto anziché direttamente sul server
  • Evitare di includere eventi che si verificano frequentemente (ad esempio Blocco: acquisito) se non assolutamente necessario
  • Includi solo le classi di eventi necessarie
  • Specificare i filtri di limitazione per ridurre il numero di eventi
  • Evita dati ridondanti (ad es. SQL: BatchStarting e SQL: BatchCompleted)
  • Evita di eseguire grandi tracce con Profiler; prendere invece in considerazione una traccia SQL lato server
  • Limitare le dimensioni del file di traccia sul lato server e gestire l'utilizzo dello spazio

1
Per ridurre al minimo il filtro dell'impatto, è possibile tracciarlo su un file tramite i comandi sp_trace. La GUI in esecuzione in remoto causerà il massimo impatto ma è possibile utilizzarla per generare facilmente uno script con tutti i filtri che è possibile modificare rapidamente per eseguire il dump in file. Impostare il numero di file e le dimensioni del file in modo appropriato.
AndrewSQL,

21

Uso SQL Profiler contro la produzione continuamente. Se eseguito correttamente (filtraggio in modo da ottenere una quantità molto piccola di dati) su un server, il rischio è minimo. Rintracciare tutto sarebbe inutile.


7
  1. Sì, l'atto di monitoraggio richiederà alcune risorse. Eseguirlo su un server sovraccarico potrebbe ucciderlo.

  2. In realtà monitorerai il carico di vita reale: le tue azioni potrebbero perdersi nel rumore di questo carico.

A volte lo eseguiamo in produzione. Principalmente con un filtro di testo per codice specifico o con filtri CPU / durata per intercettare query più lunghe. E non proviamo a catturare piani di esecuzione XML o alcune assurdità

La chiave è sapere cosa stai cercando: non tendiamo a lasciarlo correre e intrappolare tutto.

In questo caso, se vuoi vedere i risultati di alcune azioni puoi farlo fuori orario?


2

Il Profiler introdurrà sempre un impatto sulle prestazioni.

Se si utilizza SQL Server 2008R2 + è possibile utilizzare eventi estesi. Ciò fornisce gran parte delle informazioni visualizzate nel profiler con una frazione del successo prestazionale.

Introduzione online alla documentazione http://technet.microsoft.com/en-us/library/bb630354(v=sql.105).aspx

Questa funzionalità ha ricevuto un grande aggiornamento in SQL Server 2012 che ora include una GUI in SSMS.

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.