Histogrammziel
Das Histogrammziel fasst Ereignisse eines bestimmten Ereignistyps auf Grundlage von Ereignisdaten zusammen. Die Gruppierungen von Ereignissen werden anhand einer bestimmten Ereignisspalte oder Aktion gezählt. Mit dem Histogrammziel können Sie Leistungsprobleme diagnostizieren. Durch Identifizieren der am häufigsten eintretenden Ereignisse können Sie relevante Bereiche ausmachen, die auf mögliche Ursachen eines Leistungsproblems hindeuten.
In der folgenden Tabelle werden die verfügbaren Optionen zum Konfigurieren des Histogrammziels beschrieben.
Option |
Zulässige Werte |
Beschreibung |
---|---|---|
slots |
Ein ganzzahliger Wert. Dieser Wert ist optional. |
Ein vom Benutzer angegebener Wert, der die maximale Anzahl von Gruppierungen angibt, die beizubehalten sind. Wenn dieser Wert erreicht wird, werden neue Ereignisse, die nicht zu vorhandenen Gruppen gehören, ignoriert. Beachten Sie, dass die Slotnummer zur Leistungsverbesserung auf die nächste Potenz von 2 aufgerundet wird. |
filtering_event_name |
Ein beliebiges Ereignis in der Sitzung für erweiterte Ereignisse. Dieser Wert ist optional. |
Ein vom Benutzer angegebener Wert, mit dem eine Klasse von Ereignissen identifiziert wird. Nur Instanzen des angegebenen Ereignisses werden Buckets zugeordnet. Alle anderen Ereignisse werden ignoriert. Wenn Sie diesen Wert angeben, müssen Sie folgendes Format verwenden: package_name.event_name beispielsweise 'sqlserver.checkpoint_end'. Sie können den Paketnamen mit der folgenden Abfrage ermitteln:
Wenn Sie den filtering_event_name-Wert nicht angeben, muss source_type auf 1 (Standard) festgelegt werden. |
source_type |
Der Typ des Objekts, auf dem der Bucket basiert. Dieser Wert ist optional. Wenn er nicht angegeben wird, wird 1 als Standardwert verwendet. |
Kann einen der folgenden Werte aufweisen:
|
source |
Ereignisspalte oder Aktionsname. |
Die Ereignisspalte oder der Aktionsname, die bzw. der als Datenquelle verwendet wird. Wenn Sie für source eine Ereignisspalte angeben, müssen Sie eine Spalte aus dem Ereignis angeben, die für den filtering_event_name-Wert verwendet wird. Sie können mögliche Spalten mithilfe der folgenden Abfrage identifizieren:
Wenn Sie für source eine Ereignisspalte angeben, müssen Sie im source-Wert nicht den Paketnamen angeben. Wenn Sie für source einen Aktionsnamen angeben, müssen Sie eine der Aktionen verwenden, die für die Auflistung in der Ereignissitzung konfiguriert ist, für die dieses Ziel verwendet wird. Mögliche Werte für den Aktionsnamen können Sie ermitteln, indem Sie die Spalte action_name der Sicht sys.dm_xe_sesssion_event_actions abfragen. Wenn Sie als Datenquelle einen Aktionsnamen verwenden, müssen Sie den source -Wert im Format package_name.action_name angeben. |
Im folgenden Beispiel wird das Erfassen von Daten mit dem Histogrammziel auf abstrakter Ebene veranschaulicht. In diesem Beispiel soll das Histogrammziel zum Zählen der Anzahl der eingetretenen Wartevorgänge je Wartevorgangstyp verwendet werden. Geben Sie dazu beim Definieren des Histogrammziels die folgenden Optionen an:
filtering_event_name = 'wait_info'
source = 'wait_type'
source_type = 0 (da wait_type eine Ereignisspalte ist)
Im Beispielszenario werden die folgenden Daten für die wait_type-Quelle aufgezeichnet:
Ereignisnamensfilter |
Quellspaltenwert |
---|---|
wait_info |
file_io |
wait_info |
file_io |
wait_info |
network |
wait_info |
network |
wait_info |
sleep |
Die wait_type-Werte werden in drei Slots mit den folgenden Werten und der jeweiligen Slotanzahl kategorisiert:
Wert |
Slotanzahl |
---|---|
file_io |
2 |
network |
2 |
sleep |
1 |
Das Histogrammziel behält nur Ereignisdaten für die angegebene Quelle bei. In manchen Fällen können die Ereignisdaten zu lang sein. Dann werden sie abgeschnitten. Wenn Ereignisdaten abgeschnitten werden, wird die Anzahl von Bytes aufgezeichnet und als XML-Ausgabe angezeigt.
Hinzufügen des Ziels zu einer Sitzung
Um einer Sitzung für erweiterte Ereignisse das Histogrammziel hinzuzufügen, müssen Sie beim Erstellen oder Ändern einer Ereignissitzung je nach gewünschtem Zieltyp eine der beiden folgenden Anweisungen einschließen:
ADD TARGET package0.histogram
Die verschiedenen Optionen können Sie mithilfe der SET-Anweisung festlegen. Im folgenden Beispiel wird das Hinzufügen des Histogrammziels veranschaulicht, in dem Daten für das sqlserver.checkpoint_end-Ereignis erfasst werden.
ADD TARGET package0.histogram
(SET slots = 32, filtering_event_name = 'sqlserver.checkpoint_end', source_type = 0, source = 'database_id')
Weitere Informationen finden Sie unter Suchen der Objekte, die über die meisten Sperren verfügen und Überwachen der Systemaktivität mit erweiterten Ereignisses.
Überprüfen der Zielausgabe
Das Histogrammziel serialisiert Daten zu einem aufrufenden Programm oder einer Prozedur im XML-Format. Die Zielausgabe entspricht keinem Schema.
Sie können die Ausgabe des Histogrammziels mithilfe der folgenden Abfrage überprüfen und dabei session_name durch den Namen der Ereignissitzung ersetzen.
SELECT name, target_name, CAST(xet.target_data AS xml)
FROM sys.dm_xe_session_targets AS xet
JOIN sys.dm_xe_sessions AS xe
ON (xe.address = xet.event_session_address)
WHERE xe.name = 'session_name'
Im folgenden Beispiel wird das Ausgabeformat des Histogrammziels veranschaulicht.
<Slots truncated = "0" buckets=[count]>
<Slot count=[count] trunc=[truncated bytes]>
<value>
</value>
</Slot>
</Slots>
Siehe auch
Verweis
sys.dm_xe_session_targets (Transact-SQL)
CREATE EVENT SESSION (Transact-SQL)
ALTER EVENT SESSION (Transact-SQL)