环形缓冲区目标

环形缓冲区目标在内存中短暂保存事件数据。 此目标可以在以下两种模式之一中管理事件。

  • 第一个模式是严格的先出先出 (FIFO),使用分配给目标的所有内存时,将丢弃最旧的事件。 在此模式(默认值)中,occurrence_number选项设置为 0。

  • 第二种模式是按事件 FIFO,其中保留每个类型的指定数量的事件。 在此模式下,当目标已经使用了所有分配的内存时,将会丢弃每种类型中最早的事件。 可以配置occurrence_number选项,以指定要保留的每个类型的事件数。

下表介绍了配置环形缓冲区目标的可用选项。

选项 允许的值 DESCRIPTION
最大内存 任何 32 位整数。 此值是可选的。 要使用的最大内存量(KB)。 根据第一次达到的限制删除现有事件:max_event_limit或max_memory。 最大值为 4194303 KB。 在将环形缓冲区大小设置为 GB 范围内的限制之前,应仔细考虑,因为它可能会影响 SQL Server 中的其他内存使用者
最大事件限制 任何 32 位整数。 此值是可选的。 ring_buffer 中所保留的最大事件数。 现有事件根据最先达到的限制被丢弃:max_event_limit或max_memory。 默认值 = 1000。
事件编号 以下值之一:

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>  

另请参阅