Optimieren der SQL-AblaufverfolgungOptimize SQL Trace

Dieses Thema gilt für: JaSQL ServerkeineAzure SQL-DatenbankkeineAzure SQL Data Warehouse keine Parallel DatawarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Obwohl die SQL-Ablaufverfolgung die Leistung beansprucht, weil Systemressourcen zum Sammeln von Daten verwendet werden, können diese Leistungseinbußen begrenzt werden.Although running SQL Trace incurs a performance cost because it uses system resources to gather data, you can do many things to minimize it. Zum Minimieren der Leistungseinbuße durch eine Ablaufverfolgung gibt es folgende Möglichkeiten:To minimize the performance cost incurred by a trace, try the following:

  • Sie können auch die Eingabeaufforderung verwenden, um Ablaufverfolgungen auszuführen.Consider using the command prompt to run traces. Das Verwenden einer grafischen Benutzeroberfläche beeinträchtigt die Leistung.Using a graphical user interface hinders performance. Weitere Informationen finden Sie unter sp_trace_create (Transact-SQL).For more information, see sp_trace_create (Transact-SQL).

  • Vermeiden Sie das Einbeziehen von Ereignissen, die häufig auftreten.Avoid including events that occur frequently. Schränken Sie die Ablaufverfolgung mithilfe spezifischer Klassen und Filter ein.If possible, narrow your trace by means of specific event classes and filters. Durch weniger gesammelte Ablaufverfolgungsereignisse werden weniger Systemressourcen für die Unterstützung der Ablaufverfolgung benötigt.If fewer trace events are gathered, fewer system resources are required to support tracing.

  • Fokussieren Sie die Ablaufverfolgung auf das Sammeln derjenigen Ereignisse, die relevante Daten liefern.Focus the trace to collect only events that provide relevant data. Wenn Sie beispielsweise eine Ablaufverfolgung zum Identifizieren von Deadlocks ausführen, beziehen Sie die Lock:Deadlock -Ereignisklasse ein, nicht aber Lock:Acquired .For example, if your trace is to identify deadlocks, include the Lock:Deadlock event class, but not the Lock:Acquired event class. Wenn Sie beide Ereignisklassen einbeziehen, muss von der Ablaufverfolgung auf jede angeforderte Sperre reagiert werden, was die Ausführungskosten verdoppelt.If you include both event classes, the trace has to respond to every lock that is acquired, and your execution cost is doubled.

  • Vermeiden Sie das Sammeln doppelter Daten.Avoid collecting duplicate data. Wenn Sie beispielsweise SQL:BatchStarted und SQL:BatchCompletedsammeln, können Sie die Größe des Ergebnissatzes durch das ausschließliche Sammeln von Textdaten für die SQL:BatchStarted -Ereignisklasse minimieren.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.

  • Verwenden Sie in der Ablaufverfolgungsdefinition Filter.Use filters in the trace definition. Wenn Sie beispielsweise wissen, dass ein bestimmter Benutzer eine langsame Ausführung während Ad-hoc-Abfragen berichtet, erstellen Sie einen Filter für LoginName.For example, if you know that a certain user is reporting slow performance during ad hoc queries, create a filter on LoginName. Richten Sie den Filter so ein, dass nur Ereignisse einbezogen werden, in denen LoginName mit dem Benutzernamen übereinstimmt.Set the filter to include only events where the LoginName matches that user name.

    Wenn Sie eine Ablaufverfolgung für Ereignisse ausführen müssen, die signifikante Auswirkungen auf die Leistung haben, können Sie mithilfe einer der folgenden Methoden den Leistungsverlust auf dem Server begrenzen: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:

  • Führen Sie Ablaufverfolgungen für kürzere Zeitspannen durch.Run traces for shorter periods of time. Sie können die Dauer der Ausführung einer Ablaufverfolgung steuern, indem Sie eine Beendigungszeit aktivieren.You can control the length of time that a trace runs by enabling a stop time. Dies ist besonders wichtig, wenn Sie nicht die Ereignisklassen begrenzen oder ein Ereignis filtern können.This is especially important if you cannot limit the event classes or filter an event. Durch das Aktivieren einer Beendigungszeit wird sichergestellt, dass der Leistungsverlust nicht unbegrenzt andauert.Enabling a stop time ensures that the performance incurred does not last indefinitely.

  • Begrenzen Sie die Größe der Ablaufverfolgungsergebnisse.Limit the size of the trace results. Sie können die Größe der Ablaufverfolgungsergebnisse auf eine maximale Dateigröße beschränken.You can limit the size of the trace results to a maximum file size. Durch diese Strategie wird sichergestellt, dass die Leistungseinbußen stoppen, wenn die Dateigrößengrenze erreicht wird (wenn kein Dateirollover aktiviert ist).This strategy ensures that the performance cost stops when the file-size limit is reached (if file rollover is not enabled).

  • Schränken Sie die Anzahl der zurückgegebenen Ereignisse ein.Limit the number of events returned. Mithilfe von SQL Server ProfilerSQL Server Profiler können Sie die Anzahl der zurückgegebenen Ereignisse begrenzen, indem Sie die Ablaufverfolgung in einer Tabelle speichern und die maximale Zeilenanzahl festlegen.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. Die Ablaufverfolgungsergebnisse werden weiterhin zum SQL Server ProfilerSQL Server Profiler -Bildschirm zurückgegeben, nachdem die maximale Zeilenanzahl erreicht wurde, aber die Kosten für das Aufzeichnen der Ergebnisse in einer Tabelle sind ausgeschaltet.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.

Weitere Informationen finden Sie unterSee Also

Filtern einer AblaufverfolgungFilter a Trace