リング バッファー ターゲットは、メモリ内のイベント データを短時間保持します。 このターゲットは、2 つのモードのいずれかでイベントを管理できます。
最初のモードは厳密な先入れ先出し (FIFO) であり、ターゲットに割り当てられているすべてのメモリが使用されると、最も古いイベントが破棄されます。 このモード (既定値) では、occurrence_number オプションは 0 に設定されます。
2 番目のモードはイベントごとの FIFO で、各種類のイベントの指定された数が保持されます。 このモードでは、ターゲットに割り当てられているすべてのメモリが使用されると、各型の最も古いイベントが破棄されます。 occurrence_number オプションを構成して、保持する各種類のイベントの数を指定できます。
次の表では、リング バッファー ターゲットを構成するために使用できるオプションについて説明します。
| 選択肢 | 使用できる値 | 説明 |
|---|---|---|
| 最大メモリ | 任意の 32 ビット整数。 この値は省略可能です。 | 使用するメモリの最大量をキロバイト単位で指定します。 既存のイベントは、最初に到達した制限 (max_event_limitまたはmax_memory) に基づいて削除されます。 最大値は 4194303 KB です。 SQL Server の他のメモリ コンシューマーに影響を与える可能性があるため、リング バッファー サイズを GB 範囲の制限に設定する前に慎重に検討する必要があります |
| 最大イベント制限 | 任意の 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>