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.