Ottimizzare l'utilizzo di Traccia SQLOptimize SQL Trace

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.Although running SQL Trace incurs a performance cost because it uses system resources to gather data, you can do many things to minimize it. Per ridurre i costi di prestazioni provocati dall'utilizzo di una traccia, provare le soluzioni seguenti:To minimize the performance cost incurred by a trace, try the following:

  • Utilizzare il prompt dei comandi per eseguire tracce.Consider using the command prompt to run traces. L'utilizzo di un'interfaccia utente grafica influisce sulle prestazioni.Using a graphical user interface hinders performance. Per altre informazioni, vedere sp_trace_create (Transact-SQL).For more information, see sp_trace_create (Transact-SQL).

  • Evitare di includere eventi generati di frequente.Avoid including events that occur frequently. Se possibile, limitare la traccia tramite classi di evento e filtri specifici.If possible, narrow your trace by means of specific event classes and filters. Se viene raccolta una quantità minore di eventi di traccia, sarà minore anche la quantità di risorse di sistema necessarie per eseguire la traccia.If fewer trace events are gathered, fewer system resources are required to support tracing.

  • Concentrare la traccia per raccogliere solo gli eventi che forniscono dati pertinenti.Focus the trace to collect only events that provide relevant data. Se, ad esempio, la traccia consiste nell'identificare deadlock, includere la classe di evento Lock:Deadlock , ma non Lock:Acquired .For example, if your trace is to identify deadlocks, include the Lock:Deadlock event class, but not the Lock:Acquired event class. Se si includono entrambe le classi di evento, la traccia dovrà rispondere a ogni blocco acquisito e i costi di esecuzione risulteranno raddoppiati.If you include both event classes, the trace has to respond to every lock that is acquired, and your execution cost is doubled.

  • Evitare di raccogliere dati duplicati.Avoid collecting duplicate data. 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 .For example, if you collect SQL:BatchStarted and the SQL:BatchCompleted, you can minimize the size of the results set by collecting text data for the SQL:BatchStarted event class only.

  • Utilizzare filtri nella definizione di traccia.Use filters in the trace definition. Se, ad esempio, un utente segnala prestazioni rallentate durante l'esecuzione di query ad hoc, creare un filtro in LoginName.For example, if you know that a certain user is reporting slow performance during ad hoc queries, create a filter on LoginName. Impostare il filtro in modo da includere solo gli eventi in cui LoginName corrisponde al nome dell'utente.Set the filter to include only events where the LoginName matches that user name.

    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:If you need to run a trace for events that create a significant impact on performance, consider limiting the performance impact on the server by using one of the following methods:

  • Eseguire tracce per periodi di tempo inferiori.Run traces for shorter periods of time. È possibile controllare la quantità di tempo impiegata per l'esecuzione di una traccia abilitando un'ora di arresto.You can control the length of time that a trace runs by enabling a stop time. Si tratta di un aspetto particolarmente importante se non è possibile limitare le classi di evento o filtrare un evento.This is especially important if you cannot limit the event classes or filter an event. L'abilitazione di un'ora di arresto garantisce che l'impatto sulle prestazioni non duri all'infinito.Enabling a stop time ensures that the performance incurred does not last indefinitely.

  • Limitare le dimensioni dei risultati della traccia.Limit the size of the trace results. È possibile limitare le dimensioni dei risultati della traccia impostando dimensioni file massime.You can limit the size of the trace results to a maximum file size. 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 abilitato il rollover dei file.This strategy ensures that the performance cost stops when the file-size limit is reached (if file rollover is not enabled).

  • Limitare il numero di eventi restituiti.Limit the number of events returned. Tramite SQL Server ProfilerSQL Server Profiler è possibile limitare il numero di eventi restituiti salvando la traccia in una tabella e impostando il numero massimo di righe.With SQL Server ProfilerSQL Server Profiler you can limit the number of events returned by saving the trace to a table and setting the maximum number of rows. I risultati della traccia verranno comunque restituiti nella schermata di SQL Server ProfilerSQL Server Profiler dopo il raggiungimento del numero massimo di righe, ma sarà possibile azzerare i costi correlati alla registrazione dei risultati in una tabella.Trace results are still returned to the SQL Server ProfilerSQL Server Profiler screen after the maximum number of rows has been reached, but the cost of recording the results to a table is eliminated.

Vedere ancheSee Also

Filtrare una tracciaFilter a Trace