Ottimizzazione dell'utilizzo di Traccia SQL
Sebbene l'esecuzione di Traccia SQL comporti costi di prestazioni significativi, in quanto la funzionalità utilizza le risorse di sistema per raccogliere dati, è possibile adottare numerosi accorgimenti per ridurre tali costi. Per ridurre i costi di prestazioni provocati dall'utilizzo di una traccia, provare le soluzioni seguenti:
Utilizzare il prompt dei comandi per eseguire tracce. L'utilizzo di un'interfaccia utente grafica influisce sulle prestazioni. Per ulteriori informazioni, vedere sp_trace_create (Transact-SQL).
Evitare di includere eventi generati di frequente. Se possibile, limitare la traccia tramite classi di evento e filtri specifici. Se viene raccolta una quantità minore di eventi di traccia, sarà minore anche la quantità di risorse di sistema necessarie per eseguire la traccia.
Concentrare la traccia per raccogliere solo gli eventi che forniscono dati pertinenti. Se, ad esempio, la traccia consiste nell'identificare deadlock, includere la classe di evento Lock:Deadlock, ma non Lock:Acquired. Se si includono entrambe le classi di evento, la traccia dovrà rispondere a ogni blocco acquisito e i costi di esecuzione risulteranno raddoppiati.
Evitare di raccogliere dati duplicati. Se, ad esempio, si raccolgono le classi di evento SQL:BatchStarted e SQL:BatchCompleted, è possibile ridurre le dimensioni dei set di risultati raccogliendo i dati di testo solo per la classe di evento SQL:BatchStarted.
Utilizzare filtri nella definizione di traccia. Se, ad esempio, un utente segnala prestazioni rallentate durante l'esecuzione di query ad hoc, creare un filtro in LoginName. Impostare il filtro in modo da includere solo gli eventi in cui LoginName corrisponde al nome dell'utente.
Se è necessario eseguire una traccia per eventi che comportano un impatto significativo sulle prestazioni, provare a limitare tale impatto nel server utilizzando uno dei modi seguenti:
Eseguire tracce per periodi di tempo inferiori. È possibile controllare la quantità di tempo impiegata per l'esecuzione di una traccia attivando un'ora di interruzione. Si tratta di un aspetto particolarmente importante se non è possibile limitare le classi di evento o filtrare un evento. L'attivazione di un'ora di interruzione garantisce che l'impatto sulle prestazioni non duri all'infinito.
Limitare le dimensioni dei risultati della traccia. È possibile limitare le dimensioni dei risultati della traccia impostando dimensioni file massime. Questa strategia assicura l'azzeramento dei costi di prestazioni dopo che sono state raggiunte le dimensioni limite per il file, a condizione che non sia attivo il rollover dei file.
Limitare il numero di eventi restituiti. Tramite SQL Server Profiler è possibile limitare il numero di eventi restituiti salvando la traccia in una tabella e impostando il numero massimo di righe. I risultati della traccia verranno comunque restituiti nella schermata di SQL Server Profiler dopo il raggiungimento del numero massimo di righe, ma sarà possibile azzerare i costi correlati alla registrazione dei risultati in una tabella.