Compartir a través de


Destino de emparejamiento de eventos

El destino de emparejamiento de eventos asocia dos eventos usando una o varias columnas de datos presentes en cada evento. Muchos eventos vienen en parejas, como por ejemplo, bloqueo y desbloqueo. Una vez emparejada un flujo de eventos, se descartan ambos eventos. El descarte de los conjuntos asociados permite una detección fácil de adquisiciones de bloqueos que no se han liberado.

Al emplear los filtros de nivel de eventos, el destino de emparejamientos puede usarse para capturar solo eventos que no coincidan con los criterios predefinidos.

Al usar el destino de emparejamiento de eventos, se podrán elegir los dos eventos que se van a asociar, junto con una secuencia de columnas en la que realizar la asociación. Todas las columnas de este flujo deben ser del mismo tipo.

La siguiente tabla describe las opciones disponibles para configurar el emparejamiento de eventos.

Opción

Valores permitidos

Descripción

begin_event

Un nombre de evento presente en la sesión actual.

El nombre de evento que especifica el evento de inicio en una secuencia emparejada.

end_event

Un nombre de evento presente en la sesión actual.

El nombre de evento que especifica el evento final en una secuencia emparejada.

begin_matching_columns

Una lista ordenada y delimitada por comas de nombres de columna.

Las columnas en las que realizar la asociación.

end_matching_columns

Una lista ordenada y delimitada por comas de nombres de columna.

Las columnas en las que realizar la asociación.

begin_matching_actions

Una lista de acciones ordenada y delimitada por comas.

Las acciones en las que se debe realizar la asociación.

end_matching_actions

Una lista de acciones ordenada y delimitada por comas.

Las acciones en las que se debe realizar la asociación.

respond_to_memory_pressure

Uno de los valores siguientes:

  • 0 = No responder.

  • 1 = Dejar de agregar nuevos elementos huérfanos a la lista en caso de que exista presión de memoria.

La respuesta del destino a los eventos de memoria. Si se estable en 1 y la memoria del servidor es insuficiente, se quitará la información no emparejada.

max_orphans

Especifica el número total de eventos no emparejados que se recopilarán en el destino. Una vez alcanzado el límite, los eventos no emparejados se quitan con un orden FIFO (primero en entrar, primero en salir). Valor predeterminado = 10,000.

Todos los datos asociados a un evento se capturan y almacenan para futuros emparejamientos. Además, se recopilan los datos agregados por las acciones. Los datos de eventos recopilados se almacenan en la memoria y, por lo tanto, tienen un límite finito. Este límite depende de la actividad y capacidad del sistema. En lugar de tomar la cantidad de memoria máxima que se va a utilizar como un parámetro, la memoria utilizada dependerá de los recursos disponibles del sistema. Cuando no hay recursos, se quitarán los eventos no emparejados que se han conservado. Si un evento no se ha emparejado y se quita, el evento asociado aparecerá como un evento no emparejado.

El destino de emparejamiento serializa los eventos no emparejados a un formato XML. Este formato no sigue ningún esquema. El formato solo contiene dos tipos de elementos. El elemento <unpaired> es la raíz, seguido de uno. Elemento <event> para cada evento no emparejado cuyo seguimiento se está realizando actualmente. El elemento <event> contiene un atributo con el nombre del evento no emparejado.

Agregar el destino a una sesión

Para agregar el destino de búsqueda del par a una sesión de eventos extendidos, debe incluir la siguiente instrucción al crear o modificar una sesión de eventos:

ADD TARGET package0.pair_matching 

Para ello se usaría una instrucción SET, para definir los eventos del principio y el fin, y qué acciones o columnas hacer coincidir. En el siguiente ejemplo se muestra la sintaxis del ejemplo para el par que coincide con los eventos sqlserver.lock_acquired y sqlserver.lock_released.

   ( SET begin_event = 'sqlserver.lock_acquired',
      begin_matching_columns = 'database_id, resource_0, resource_1, resource_2, transaction_id, mode',
      end_event = 'sqlserver.lock_released',
      end_matching_columns = 'database_id, resource_0, resource_1, resource_2, transaction_id, mode',
   respond_to_memory_pressure = 1)

Para obtener más información, vea Determinar las consultas que mantienen bloqueos.

Revisar la salida del destino

Para revisar la salida del destino de coincidencia del par, 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 siguiente ejemplo se muestra el formato de salida del destino de emparejamiento.

<unpaired truncated = "0" matchedCount = "[matched count]" memoryPressureDroppedCount = " [lost count]">
    <event name  = "[event name]" package = "[package]" id= "[event ID value]" version = "[event version]">
    <data name = "[column name]"> 
    <type name = "[column type]" package = "[type package]" /> 
    <value>[column value]</value>
    <text value>[text value]</text>>
        </data>
    </event>
</unpaired>

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