Condividi tramite


Destinazione dell'istogramma

La destinazione dell'istogramma raggruppa le occorrenze di un tipo di evento specifico in base ai dati relativi all'evento. I raggruppamenti di eventi sono conteggiati in base a una colonna di evento oppure a un'azione specificata. È possibile utilizzare la destinazione dell'istogramma dell'evento per risolvere i problemi relativi alle prestazioni. Grazie all'identificazione degli eventi che si verificano più di frequente, è infatti possibile individuare elementi specifici che indicano la causa potenziale di un problema relativo alle prestazioni.

Nella tabella seguente vengono descritte le opzioni che consentono di configurare la destinazione dell'istogramma.

Opzione

Valori consentiti

Descrizione

slots

Qualsiasi valore intero. Questo valore è facoltativo.

Valore specificato dall'utente che indica il numero massimo di raggruppamenti da mantenere. Quando questo valore viene raggiunto, i nuovi eventi che non appartengono ai gruppi esistenti vengono ignorati.

Si noti che per migliorare le prestazioni, il numero di slot viene arrotondato alla potenza di 2 più vicina.

filtering_event_name

Qualsiasi evento presente nella sessione degli eventi estesi. Questo valore è facoltativo.

Valore specificato dall'utente utilizzato per identificare una classe di eventi. Nel bucket vengono inserite solo le istanze dell'evento specificato. Tutti gli altri eventi vengono ignorati.

Se si specifica questo valore, è necessario utilizzare il formato package_name.event_name, ad esempio 'sqlserver.checkpoint_end'. Per identificare il nome del pacchetto, è possibile utilizzare la query seguente:

SELECT p.name, se.event_name
FROM sys.dm_xe_session_events se
JOIN sys.dm_xe_packages p
ON se_event_package_guid = p.guid
ORDER BY p.name, se.event_name

Se non si specifica il valore di filtering_event_name, è necessario impostare source_type su 1 (impostazione predefinita).

source_type

Tipo di oggetto su cui è basato il bucket. Si tratta di un valore facoltativo che, se non è specificato, assumerà il valore predefinito 1.

I valori consentiti sono i seguenti:

  • 0 per un evento

  • 1 per un'azione

source

Colonna di evento o nome dell'azione.

Colonna di evento o nome dell'azione utilizzato come origine dati.

Quando si specifica una colonna di evento per source, è necessario specificare una colonna dall'evento utilizzato per il valore di filtering_event_name. Per identificare le possibili colonne, utilizzare la query seguente:

SELECT name FROM sys.dm_xe_object_columns
WHERE object_name = '<eventname>'
AND column_type != 'readonly'

Quando si specifica una colonna di evento per source, non è necessario includere il nome del pacchetto nel valore di source.

Quando si specifica un nome di azione per source, è necessario utilizzare una delle azioni configurate per la raccolta nella sessione eventi per cui viene utilizzata la destinazione. Per individuare i possibile valori per il nome di azione, è possibile eseguire una query sulla colonna action_name della vista sys.dm_xe_sesssion_event_actions.

Se si utilizza un nome di azione come origine dati, è necessario specificare il valore source utilizzando il formato package_name.action_name.

Nell'esempio seguente viene illustrato, a un livello elevato, il modo in cui i dati vengono raccolti nella destinazione dell'istogramma. Nell'esempio la destinazione dell'istogramma viene utilizzata per contare il numero di volte in cui si verifica ogni tipo di attesa. A tale scopo, è necessario specificare le opzioni seguenti quando si definisce la destinazione dell'istogramma:

  • filtering_event_name = 'wait_info'

  • source = 'wait_type'

  • source_type = 0 (perché wait_type è una colonna di evento)

Nello scenario di esempio per l'origine wait_type vengono registrati i dati seguenti:

Nome evento di filtro

Valore colonna di origine

wait_info

file_io

wait_info

file_io

wait_info

di rete

wait_info

di rete

wait_info

sospensione

I valori relativi al tipo di attesa verranno suddivisi in tre slot, cui sono associati i valori e i conteggi di slot seguenti:

Valore

Conteggio di slot

file_io

2

di rete

2

sospensione

1

Nella destinazione dell'istogramma vengono mantenuti solo i dati degli eventi per l'origine specificata. Nel caso in cui le dimensioni dei dati degli eventi siano troppo elevate per mantenere completamente i dati, questi ultimi vengono troncati. Quando i dati degli eventi sono troncati, il numero di byte è registrato e visualizzato come output XML.

Aggiunta della destinazione a una sessione

Per aggiungere la destinazione dell'istogramma a una sessione di eventi estesi, è necessario includere una delle istruzioni seguenti quando si crea o modifica una sessione eventi, a seconda del tipo di destinazione desiderato:

ADD TARGET package0.histogram

È possibile utilizzare l'istruzione SET per impostare le varie opzioni. Nell'esempio seguente viene illustrata l'aggiunta della destinazione dell'istogramma, in cui vengono raccolti dati per l'evento sqlserver.checkpoint_end.

ADD TARGET package0.histogram
(SET slots = 32, filtering_event_name = 'sqlserver.checkpoint_end', source_type = 0, source = 'database_id')

Per ulteriori informazioni, vedere Cercare gli oggetti con il maggior numero di blocchi acquisiti e Monitorare l'attività del sistema mediante gli eventi estesi.

Analisi dell'output di destinazione

La destinazione dell'istogramma serializza i dati in un programma o una procedura chiamante in formato XML. L'output della destinazione non è conforme ad alcuno schema.

Per esaminare l'output dalla destinazione dell'istogramma, è 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 dell'istogramma.

<Slots truncated = "0" buckets=[count]>
    <Slot count=[count] trunc=[truncated bytes]>
        <value>
        </value>
    </Slot>
</Slots>

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