环形缓冲区目标

环形缓冲区目标用于在内存中暂时容纳事件数据。 此目标可通过以下两种模式中的一种来管理事件。

  • 第一种模式是严格的先进先出模式 (FIFO),在这种模式下,当分配给目标的所有内存都用尽时,将放弃最旧的事件。 在此模式下(默认模式),occurrence_number 选项设置为 0。

  • 第二种模式是按事件 FIFO,在这种模式下,每种类型将保留指定数量的事件。 在这种模式下,当分配给目标的所有内存都用尽时,将放弃每种类型的最旧的事件。 您可以配置 occurrence_number 选项来指定每种类型要保留的事件数量。

下表描述了配置环形缓冲区目标时可用的选项。

选项

允许的值

说明

max_memory

任何 32 位的整数。 此值为可选值。

要使用的最大内存量 (KB)。 将基于首先到达的限制删除现有事件:max_event_limit 或 max_memory。

max_event_limit

任何 32 位的整数。 此值为可选值。

保留在 ring_buffer 中的事件的最大数量。 将基于首先到达的限制删除现有事件:max_event_limit 或 max_memory。 默认值 = 1000。

occurrence_number

可以是以下值之一:

  • 0(默认值)= 当分配给目标的所有内存都用尽时,将放弃最旧的事件。

  • 任何 32 位整数 = 按事件 FIFO,在放弃前要保留的每种类型的事件数。

此值为可选值。

FIFO 模式使用,如果设为大于 0 的值,则为要保留在缓冲区中的每种类型的首选事件数。

将目标添加到会话

若要将环形缓冲区目标添加到扩展事件会话中,您必须在创建或更改事件会话时包括下面的语句:

ADD TARGET package0.ring_buffer

查看目标输出

若要查看环形缓冲区目标的输出,您可以使用下面的查询,并将 session_name 替换为事件会话的名称。

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'

下面的示例演示了环形缓冲区目标的输出格式。

<RingBufferTarget eventsPerSec="" processingTime="" totalEventsProcessed="" eventCount="" droppedCount="" memoryUsed="">
 <event name="" package="" id="" version="" timestamp="">
    <data name="">
      <type name="" package="" />
      <value></value>
      <text></text>
    </data>
    <action name="" package="">
      <type name="" package="" />
      <value></value>
      <text></text>
    </action>
  </event>
</RingBufferTarget>

请参阅

参考

sys.dm_xe_session_targets (Transact-SQL)

CREATE EVENT SESSION (Transact-SQL)

ALTER EVENT SESSION (Transact-SQL)

概念

SQL Server 扩展事件目标