Qualche consiglio sull’uso del Profiler di SQL Server, uno strumento indispensabile per individuare l’origine dei rallentamenti nel database.

Il Profiler genera una traccia in tempo reale delle attività del database, segnando il software di origine, l’utente, la query effettuata e la durata dell’istruzione. È possibile quindi monitorare il comportamento del database server durante il normale utilizzo, per poi scaricare la traccia ed analizzarla alla ricerca di eventuali anomalie.

Sono tantissimi i tipi di eventi che il Profiler può monitorare. Ai fini dell’analisi performance quelli indispensabili sono soltanto due:

Per limitare il numero di righe di traccia generate dal profiler, è possibile impostare un filtro agli eventi. Quello per durata è il più importante. Ricercheremo infatti per prime le query molto lente e poi solo successivamente quelle veloci ma eseguite troppe volte (es. errore di programmazione). 50 millisecondi è un buon filtro di partenza.

Avviata la traccia, il Profiler inizia a generare il log delle attività. È importante verificare che il numero di righe generate non sia troppo elevato, soprattutto durante l’analisi di 1 o 2 ore di lavoro reale. In tal caso bisogna raffinare i filtri di traccia. È bene non avere più di un centinaio di migliaia di righe di traccia.

Al termine del monitoraggio si può salvare la traccia in una normale tabella di database ed analizzarla con opportune query. Una buona query di partenza è questa:

Nell’esempio, il risultato ci mostra una query molto lenta, eseguita solo 9 volte ma che ha impegnato il database server per ben 184 secondi: