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:

  • 0 (valore predefinito) = l'evento meno recente viene eliminato una volta utilizzata tutta la memoria allocata alla destinazione.

  • Qualsiasi valore intero a 32 bit = indica il numero di eventi di ciascun tipo da mantenere prima di eseguire l'eliminazione secondo una modalità FIFO basata sul tipo di evento.

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)

Concetti

Destinazioni degli eventi estesi di SQL Server