it-swarm.it

Utilizzo di SQL Profiler su un database in produzione

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 sul mio sviluppo ambiente 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?

28
Andrew Shepherd

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 sp_trace_XXX procedure) anziché. Inoltre ho trovato articoli:

Impatto sulle prestazioni: traccia del profiler vs. traccia SQL lato server ,

Automazione della 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
19
garik

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.

21
mrdenny
  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?

7
gbn

Il Profiler introdurrà sempre un impatto sulle prestazioni.

Se si utilizza SQL Server 2008R2 + è possibile utilizzare eventi estesi. Ciò fornisce gran parte delle informazioni che vedi 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.

2
James Anderson