Il profiler SQL influisce sulle prestazioni del server?


11

Sto affrontando un problema in cui il server SQL 2008 non riesce per un certo carico elevato. Devo trovare quel caso di carico e devo ottimizzare il codice in modo che possa gestire il carico. Ho scoperto su Internet che il profiler SQL può essere utilizzato per tenere traccia delle interazioni del database che possono essere successivamente analizzate per trovare il punto esatto in cui si verifica il problema. Ho anche scoperto come possiamo avviare il profiler sql. Ma ora la mia domanda è che avviando il profiler sql ho intenzione di influenzare le prestazioni del server?


5
sì. Dipende da come e dove lo esegui. Fatto nel modo giusto può essere un carico aggiuntivo di appena qualche percento.
Mitch Wheat,

3
Gli eventi estesi possono essere un'opzione più leggera.
Martin Smith,

Risposte:


10

SQL Server Profiler è una GUI che utilizza la traccia di SQL Server attraverso il lato client. A causa di questa natura, sì, si può potenzialmente vedere un impatto sulle prestazioni da lieve a grave a seconda dell'ambiente.

SQL Server Profiler è adatto principalmente per una rapida occhiata a ciò che sta accadendo sul server (a condizione che il server di database sia in grado di gestire la latenza aggiuntiva). Non è previsto per essere eseguito per lunghi periodi di tempo. Per tracce più lunghe, utilizzare una traccia lato server o Eventi estesi.


+1 anche una traccia di profiler molto breve, a seconda di molti fattori, può paralizzare un server.
Aaron Bertrand

3

Se si utilizza la traccia lato server , l'impatto sulle prestazioni può essere ridotto al minimo.


Il mio server e database sono installati sullo stesso computer. Ora, se avvio il profiler sql tramite "Microsoft SQL Management Studio -> Strumenti-> Profiler SQL", allora quanto degrado delle prestazioni posso aspettarmi e in base a quali fattori?

Si basa su quanto è occupato il server, su quanti eventi e su quante colonne è composta la traccia e sul filtro. Il filtro può influire in entrambe le direzioni - in un modo può ridurre il numero di righe che vengono restituite all'interfaccia utente (la parte che rende il profiler più grave della traccia sul lato server), ma d'altra parte se hai scelto male filtro (ad es. textdata LIKE '%foo%') può avere l'effetto opposto. Ci sono troppe variabili per fornire qualche aspettativa magica, dovrai solo provarla. Dovresti davvero usare una traccia sul lato server, però.
Aaron Bertrand

Prova questo link se non riesci ad accedere all'originale.
Marc Lopez,

3

Tutto ciò che i precedenti poster hanno detto è corretto. Profiler è un'applicazione che, a un certo punto, ha utilizzato DMO e ora utilizza SMO per acquisire eventi di traccia. Ciò aggiunge un'enorme quantità di sovraccarico rispetto al semplice utilizzo di una traccia lato server.

SMO è un'API che aggiunge un "livello" aggiuntivo al processo di tracciabilità insieme a un'applicazione client, Profiler. Una traccia lato server leggerà gli eventi di traccia direttamente da una coda di transazione, il cui overhead risultante è trascurabile.

Sono stato in grado di eseguire tracce lato server in ambienti SQL Server che elaborano oltre 10.000 transazioni al secondo. L'uso di Profiler in quegli stessi ambienti metterà in ginocchio l'istanza del database. In qualsiasi ambiente di produzione, se è necessario tracciare l'attività del database, utilizzare sempre una traccia lato server. Profiler ucciderà l'istanza del database.


2

Sì, SQL Server Profiler influisce sulle prestazioni.

Quando si traccia utilizzando la GUI, tutti gli eventi vengono elaborati e filtrati in modo sincrono, quindi fattori come il carico del server, la latenza della rete, quali eventi vengono raccolti e persino dove vengono archiviati gli eventi raccolti, contribuiscono tutti al sovraccarico.

Come hanno suggerito altre risposte, è preferibile utilizzare una traccia sul lato server anziché la GUI. Tuttavia, questo metodo è deprecato e si dovrebbero usare invece Eventi estesi . (Nota: anche usando gli eventi estesi, che sono più leggeri di una traccia, è ancora possibile aggiungere una quantità indesiderata di carico al server - vedere l'elenco nel mio secondo paragrafo per pensare a come ridurre al minimo l'overhead durante l'impostazione di un evento sessione.)

Nel caso di un server pesantemente caricato, è necessario prestare molta attenzione alle informazioni raccolte, poiché il processo di misurazione stesso può influire sul problema in esame.


0

SQL Server Profiler funziona in due passaggi: per prima cosa devi dire di registrare tutte le query. Quindi si eseguono alcune transazioni tipiche (o semplicemente si accede alla produzione). Questo crea un "carico di prova". Quindi esegui la profilazione effettiva (analisi) utilizzando il carico di prova.

La registrazione non è molto costosa, soprattutto rispetto al costo delle query stesse.


Il mio server e database sono installati sullo stesso computer. Ora, se avvio il profiler sql tramite "Microsoft SQL Management Studio -> Strumenti-> Profiler SQL", allora quanto degrado delle prestazioni posso aspettarmi e in base a quali fattori?
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.