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:

SELECT p.name, se.event_name
FROM sys.dm_xe_session_events se
JOIN sys.dm_xe_packages p
ON se_event_package_guid = p.guid
ORDER BY p.name, se.event_name

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:

  • 0 für ein Ereignis

  • 1 für eine Aktion

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:

SELECT name FROM sys.dm_xe_object_columns
WHERE object_name = '<eventname>'
AND column_type != 'readonly'

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)

Konzepte

Ziele für erweiterte Ereignisse von SQL Server