Chi di voi non conosce il
SQL Profiler ? Per chi sviluppa su
SQL Server è uno strumento indispensabile che consente banalmente di fare un dump di tutti i comandi inviati al server SQL. E' un ottimo strumento di analisi ma non solo, consente infatti di scoprire, oltre ai nostri comandi, anche comandi interni di SQL Server non documentati, comandi di cui spesso si ignora addirittura l'esistenza.
Anche se l'utente privilegiato di
SQL Profiler dovrebbe essere il
DBA, spesso non tutti i Developer hanno un DBA a disposizione e quindi devono cavarsela da soli. Dopo averlo avviato,
SQL Profiler farà un dump di tutti i comandi appartenenti ai gruppi eventi selezionati di default. Qui di seguito si può vedere una screenshot:
Naturalmente è possibile in base alle proprie esigenze aggiungere o rimuovere ulteriori eventi.
Svolgono un ruolo fondamentale invece i filtri. Con essi infatti è possibile filtrare e quindi visualizzare solo i comandi più interessanti. Questa attività ci consente di migliorare la nostra applicazione aumentando spesso e volentieri le prestazioni ed eliminando i colli di bottiglia (bottlenecks).
Per visualizzare la lista dei filtri disponibili è possibile fare
File->Proprietà dal menù di
SQL Profiler e selezionare l'apposita linguetta
"Filtri". E'possibile aggiungere o rimuovere filtri solo quando il profiler è in stato "fermo" o in "pausa".
Alcuni fra i filtri che uso più spesso sono il
loginname e la
duration. All'avvio di
SQL Profiler sarà possibile impostare già da subito i filtri.
Imposto quindi i due filtri in questo modo:
LoginName = contosoDuration >= 500Dopo aver premuto Ok,
SQL Profiler visualizzerà tutte le operazioni svolte dal Login
contoso e che richiedono per l'elaborazione più di
500 millisecondi. Molto probabilmente le query con un tempo di esecuzione così alto sono scritte male e magari è necessario riscriverle o creare o ricreare degli indici più efficienti sulla tabelle colpite dalle query.
E' possibile quindi con
SQL Profiler concentrarsi su particolari rami dell'applicazione in modo da risolvere e rilevare potenziali problemi di security o di performance così come indicato nella screenshot seguente dove una query di aggregazione dati ha impiegato circa 1200 millisecondi:
E' da qui che inizia l'attività di indagine per scoprire da cosa è causato un tempo di esecuzione così lungo. Buon lavoro !