Destinazione del buffer circolare
La destinazione del buffer circolare mantiene brevemente in memoria i dati relativi agli eventi. Questa destinazione può gestire gli eventi in due modalità diverse.
La prima è una modalità di tipo puramente FIFO, in base alla quale l'evento meno recente viene eliminato una volta utilizzata tutta la memoria allocata alla destinazione. In questa modalità (impostazione predefinita), l'opzione occurrence_number è impostata su 0.
La seconda è una modalità FIFO basata sul tipo di evento, che prevede di mantenere in memoria un numero specificato di eventi di ciascun tipo. In base a tale modalità, gli eventi meno recenti di ciascun tipo vengono eliminati una volta utilizzata tutta la memoria allocata alla destinazione. È possibile configurare l'opzione occurrence_number per specificare il numero di eventi di ciascun tipo da mantenere.
Nella tabella seguente vengono descritte le opzioni disponibili per la configurazione della destinazione del buffer circolare.
Opzione |
Valori consentiti |
Descrizione |
---|---|---|
max_memory |
Qualsiasi valore intero a 32 bit. Questo valore è facoltativo. |
Quantità massima di memoria che può essere utilizzata in kilobyte (KB). Gli eventi esistenti vengono eliminati sulla base del limite che viene raggiunto per primo: max_event_limit o max_memory. |
max_event_limit |
Qualsiasi valore intero a 32 bit. Questo valore è facoltativo. |
Il numero massimo di eventi tenuto in ring_buffer. Gli eventi esistenti vengono eliminati sulla base del limite che viene raggiunto per primo: max_event_limit o max_memory. Valore predefinito = 1000. |
occurrence_number |
Uno dei valori seguenti:
Questo valore è facoltativo. |
Modalità FIFO da utilizzare e, se il valore impostato è maggiore di 0, numero desiderato di eventi di ciascun tipo da mantenere nel buffer. |
Aggiunta della destinazione a una sessione
Per aggiungere la destinazione del buffer circolare a una sessione di eventi estesi, è necessario includere l'istruzione seguente quando si crea o modifica una sessione eventi:
ADD TARGET package0.ring_buffer
Analisi dell'output di destinazione
Per esaminare l'output dalla destinazione del buffer circolare, è possibile utilizzare la query seguente, sostituendo session_name con il nome della sessione eventi.
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'
Nell'esempio seguente viene illustrato il formato di output della destinazione del buffer circolare.
<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>
Vedere anche
Riferimento
sys.dm_xe_session_targets (Transact-SQL)
CREATE EVENT SESSION (Transact-SQL)
ALTER EVENT SESSION (Transact-SQL)