Cible d'histogramme
Une cible d'histogramme regroupe les occurrences d'un type d'événement spécifique en fonction de données d'événement. Les regroupements d'événements sont comptabilisés en fonction d'une colonne d'événement ou d'une action spécifiée. Vous pouvez utiliser la cible d'histogramme pour résoudre les problèmes de performance. En identifiant les événements qui se produisent le plus souvent, vous pouvez trouver des « zones réactives » qui indiquent la cause probable d'un problème de performance.
Le tableau suivant décrit les options pouvant être utilisées pour configurer la cible d'histogramme.
Option |
Valeurs autorisées |
Description |
---|---|---|
slots |
Toute valeur entière. Cette valeur est facultative. |
Valeur spécifiée par l'utilisateur qui indique le nombre maximal de regroupements à conserver. Lorsque cette valeur est atteinte, les nouveaux événements qui n'appartiennent pas aux groupes existants sont ignorés. Notez que pour améliorer les performances, le numéro d'emplacement est arrondi à la puissance suivante de 2. |
filtering_event_name |
Tout événement présent dans la session Événements étendus. Cette valeur est facultative. |
Une valeur spécifiée par l'utilisateur qui permet d'identifier une classe d'événements. Seules les instances de l'événement spécifié sont placées dans un compartiment. Tous les autres événements sont ignorés. Si vous spécifiez cette valeur, vous devez utiliser le format : package_name.event_name, par exemple 'sqlserver.checkpoint_end'. Vous pouvez identifier le nom du package à l'aide de la requête suivante :
Si vous ne spécifiez pas la valeur filtering_event_name, source_type doit avoir la valeur 1 (valeur par défaut). |
source_type |
Type d'objet sur lequel le compartiment est basé. Cette valeur est facultative et a la valeur par défaut 1 si elle n'est pas spécifiée. |
Peut avoir l'une des valeurs suivantes :
|
source |
Colonne d'événement ou nom d'action. |
La colonne d'événement ou le nom d'action utilisé(e) comme source de données. Lorsque vous spécifiez une colonne d'événement pour la source, vous devez spécifier une colonne à partir de l'événement qui est utilisé pour la valeur filtering_event_name. Vous pouvez identifier les colonnes possibles à l'aide de la requête suivante :
Lorsque vous spécifiez une colonne d'événement pour la source, il n'est pas nécessaire d'inclure le nom du package dans la valeur de la source. Lorsque vous spécifiez un nom d'action pour la source, vous devez utiliser l'une des actions configurées pour la collection dans la session d'événements pour laquelle cette cible est utilisée. Pour trouver les valeurs possibles pour le nom d'action, vous pouvez interroger la colonne action_name de la vue sys.dm_xe_sesssion_event_actions. Si vous utilisez un nom d'action comme source de données, vous devez spécifier la valeur source en utilisant le format : package_name.action_name. |
L'exemple suivant montre globalement comment la cible d'histogramme collecte les données. Dans cet exemple, vous utilisez la cible d'histogramme pour comptabiliser le nombre d'attentes de chaque type d'attente. Pour ce faire, spécifiez les options suivantes lorsque vous définissez la cible d'histogramme :
filtering_event_name = 'wait_info'
source = 'wait_type'
source_type = 0 (car wait_type est une colonne d'événement)
Dans ce scénario d'exemple, les données suivantes sont enregistrées pour la source wait_type.
Nom de l'événement de filtrage |
Valeur de la colonne source |
---|---|
wait_info |
file_io |
wait_info |
file_io |
wait_info |
réseau |
wait_info |
réseau |
wait_info |
veille |
Les valeurs de type d'attente doivent être catégorisées dans trois emplacements, avec les valeurs et nombres d'emplacements suivants :
Valeur |
Nombre d'emplacements |
---|---|
file_io |
2 |
réseau |
2 |
veille |
1 |
La cible d'histogramme conserve seulement les données d'événement pour la source spécifiée. Dans certains cas, les données d'événement peuvent être trop volumineuses pour être conservées complètement, auxquels cas les données sont tronquées. Lorsque des données d'événement sont tronquées, le nombre d'octets est enregistré et affiché comme sortie XML.
Ajout de la cible à une session
Pour ajouter la cible d'histogramme à une session Événements étendus lorsque vous créez ou modifiez une session d'événements, vous devez inclure l'une des instructions suivantes, selon le type de cible désiré :
ADD TARGET package0.histogram
Vous pouvez utiliser l'instruction SET pour définir les différentes options. L'exemple suivant montre l'ajout de la cible d'histogramme, dans laquelle les données de l'événement sqlserver.checkpoint_end sont recueillies.
ADD TARGET package0.histogram
(SET slots = 32, filtering_event_name = 'sqlserver.checkpoint_end', source_type = 0, source = 'database_id')
Pour plus d'informations, consultez Trouver les objets comportant le plus de verrous et Surveiller l'activité système à l’aide d’événements étendus.
Vérification de la sortie cible
La cible d'histogramme applique en série les données à une procédure ou un programme appelant au format XML. La sortie cible n'est conforme à aucun schéma.
Pour vérifier la sortie de la cible d'histogramme, vous pouvez utiliser la requête suivante, en remplaçant session_name par le nom de la session d'événements.
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'
L'exemple suivant illustre le format de sortie de la cible d'histogramme.
<Slots truncated = "0" buckets=[count]>
<Slot count=[count] trunc=[truncated bytes]>
<value>
</value>
</Slot>
</Slots>
Voir aussi
Référence
sys.dm_xe_session_targets (Transact-SQL)
CREATE EVENT SESSION (Transact-SQL)
ALTER EVENT SESSION (Transact-SQL)