Compartir a través de


Destino del histograma

El destino del histograma agrupa las generaciones de un tipo de evento concreto en datos del evento. El recuento de las agrupaciones de eventos se realiza tomando como base una acción o columna de evento especificada. Puede utilizar el destino del histograma para solucionar problemas de rendimiento. Mediante la identificación de los eventos que se producen con más frecuencia, puede buscar "zonas activas" que indiquen la causa posible de un problema de rendimiento.

En la tabla siguiente se describen las opciones que se pueden utilizar para configurar el destino del histograma.

Opción

Valores permitidos

Descripción

slots

Un valor entero. Este valor es opcional.

Un valor especificado por el usuario que indica el número máximo de agrupaciones que se van a conservar. Cuando se alcanza este valor, se omiten los nuevos eventos que no pertenecen a los grupos existentes.

Tenga en cuenta que, para mejorar el rendimiento, el número de zona se redondea a la siguiente potencia de 2.

filtering_event_name

Cualquier evento presente en la sesión de eventos extendidos. Este valor es opcional.

Un valor especificado por el usuario que se utiliza para identificar una clase de eventos. Solamente se crean depósitos de las instancias del evento especificado. Todos los demás eventos se omiten.

Si especifica este valor, debe utilizar el formato: package_name.event_name, por ejemplo 'sqlserver.checkpoint_end'. Puede identificar el nombre del paquete utilizando la consulta siguiente:

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

Si no especifica el valor de filtering_event_name, source_type se debe establecer en 1 (valor predeterminado).

source_type

El tipo de objeto en el que se basa el depósito. Este valor es opcional y si no se especifica, tiene un valor predeterminado de 1.

Puede tener uno de los siguientes valores:

  • 0 para un evento

  • 1 para una acción

source

Columna de evento o nombre de acción.

Columna de evento o nombre de acción que se usan como origen de datos.

Cuando se especifica una columna de evento para source, se debe especificar una columna del evento que se utiliza para el valor de filtering_event_name. Puede identificar las columnas posibles utilizando la siguiente consulta:

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

Cuando se especifica una columna de evento para source, no se tiene que incluir el nombre del paquete en el valor de source.

Cuando se especifica un nombre de acción para source, se debe utilizar una de las acciones que se configuran para la recopilación en la sesión de eventos para la que se utiliza este destino. Para buscar posibles valores para el nombre de acción, puede consultar la columna action_name de la vista sys.dm_xe_sesssion_event_actions.

Si utiliza un nombre de acción como origen de datos, debe especificar el valor de source utilizando el formato: package_name.action_name.

En el ejemplo siguiente se muestra a un alto nivel cómo el destino del histograma recopila datos. En este ejemplo, desea utilizar el destino del histograma para realizar un recuento del número de esperas de cada tipo de espera que se han producido. Para ello, debe especificar las opciones siguientes al definir el destino del histograma:

  • filtering_event_name = 'wait_info'

  • source = 'wait_type'

  • source_type = 0 (dado que wait_type es una columna de evento)

En el escenario del ejemplo, se registran los datos siguientes para el origen wait_type.

Nombre de evento de filtrado

Valor de columna de origen

wait_info

file_io

wait_info

file_io

wait_info

red

wait_info

red

wait_info

en suspensión

Los valores de tipo de espera se clasificarían en tres ranuras, con los valores y recuentos de ranura siguientes:

Valor

Recuento de ranura

file_io

2

red

2

en suspensión

1

El destino del histograma solo conserva los datos del evento correspondientes al origen especificado. En algunos casos, es posible que los datos del evento sean demasiado grandes para conservarlos al completo, en cuyo caso se truncan los datos. Cuando se truncan los datos de eventos, el número de bytes se graba y se muestra como una salida XML.

Agregar el destino a una sesión

Para agregar el destino del histograma a una sesión de Extended Events, se debe incluir cualquiera de las instrucciones siguientes al crear o modificar una sesión de eventos, dependiendo del tipo de destino deseado:

ADD TARGET package0.histogram

Puede utilizar la instrucción SET para establecer las diversas opciones. En el ejemplo siguiente se muestra la adición del destino del histograma, donde se recopilan los datos para el evento sqlserver.checkpoint_end.

ADD TARGET package0.histogram
(SET slots = 32, filtering_event_name = 'sqlserver.checkpoint_end', source_type = 0, source = 'database_id')

Para obtener más información, vea Buscar los objetos que han obtenido más bloqueos y Supervisar la actividad del sistema mediante eventos extendidos.

Revisar la salida del destino

El destino del histograma serializa los datos a un procedimiento o programa que realiza la llamada en formato XML. La salida de destino no sigue ningún esquema.

Para revisar la salida del destino del histograma, puede utilizar la siguiente consulta, reemplazando session_name por el nombre de la sesión de eventos.

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'

En el ejemplo siguiente se muestra el formato de salida del destino del histograma.

<Slots truncated = "0" buckets=[count]>
    <Slot count=[count] trunc=[truncated bytes]>
        <value>
        </value>
    </Slot>
</Slots>

Vea también

Referencia

sys.dm_xe_session_targets (Transact-SQL)

CREATE EVENT SESSION (Transact-SQL)

ALTER EVENT SESSION (Transact-SQL)

Conceptos

Destinos de SQL Server Extended Events