Destino do histograma
O destino do histograma agrupa ocorrências de um tipo de evento específico com base nos dados do evento. Os agrupamentos de eventos são contados com base em uma coluna de evento ou ação especificada. Você pode usar o destino do histograma para solucionar problemas de desempenho. Ao identificar quais eventos ocorrem mais frequentemente, você pode localizar "pontos de acesso" que indicam uma causa potencial de um problema de desempenho.
A tabela a seguir descreve as opções que podem ser usadas para configurar o destino do histograma.
Opção |
Valores permitidos |
Descrição |
---|---|---|
slots |
Qualquer valor inteiro. Esse valor é opcional. |
Um valor especificado pelo usuário que indica o número máximo de agrupamentos a serem retidos. Quando esse valor é atingido, novos eventos que não pertencem aos grupos existentes são ignorados. Observe que para aprimorar o desempenho, o número de slot é arredondado para a próxima potência de 2. |
filtering_event_name |
Qualquer evento presente na sessão de Eventos Estendidos. Esse valor é opcional. |
Um valor especificado pelo usuário usado para identificar uma classe de eventos. Apenas instâncias do evento especificado são particionadas. Todos os outros eventos são ignorados. Se você especificar esse valor, deverá usar o formato: package_name.event_name, por exemplo: 'sqlserver.checkpoint_end'. Você pode identificar o nome do pacote usando a seguinte consulta:
Se você não especificar o valor filtering_event_name, source_type deverá estar definido como 1 (o padrão). |
source_type |
O tipo de objeto no qual o bucket é baseado. Esse valor é opcional e, se não for especificado, terá 1 como valor padrão. |
Pode ter um dos seguintes valores:
|
source |
Coluna do evento ou nome da ação. |
A coluna do evento ou o nome da ação usado como a fonte de dados. Ao especificar uma coluna de eventos para source, você deve especificar uma coluna do evento que é usado para o valor de filtering_event_name. Para identificar as colunas potenciais, use a consulta a seguir:
Ao especificar uma coluna de eventos para source, não é necessário incluir o nome do pacote no valor de source. Ao especificar um nome de ação para source, você deve usar uma das ações configuradas para coleta na sessão do evento para a qual esse destino está sendo usado. Para localizar valores potenciais para o nome da ação, é possível consultar a coluna action_name da exibição sys.dm_xe_sesssion_event_actions. Se estiver usando um nome de ação como a fonte de dados, você deverá especificar o valor de source com o formato: package_name.action_name. |
O exemplo a seguir demonstra, em um nível alto, como o destino do histograma coleta dados. Neste exemplo, você deseja usar o destino do histograma para contar quantas esperas de cada tipo ocorreram. Para fazer isso, você deve especificar as seguintes opções ao definir o destino do histograma:
filtering_event_name = 'wait_info'
source = 'wait_type'
source_type = 0 (porque wait_type é uma coluna de eventos)
No cenário do exemplo, os dados a seguir são registrados para a origem de wait_type.
Nome do evento de filtragem |
Valor da coluna de origem |
---|---|
wait_info |
file_io |
wait_info |
file_io |
wait_info |
rede |
wait_info |
rede |
wait_info |
sleep |
Os valores de tipo de espera seriam categorizados em três slots, com os valores e as contagens de slot a seguir:
Valor |
Contagem de slot |
---|---|
file_io |
2 |
rede |
2 |
sleep |
1 |
O destino do histograma retém apenas dados de eventos da fonte especificada. Em alguns casos, os dados de eventos podem ser muito grandes para serem retidos completamente; nesse caso, os dados são truncados. Quando os dados de eventos são truncados, o número de bytes é registrado e exibido como saída XML.
Adicionando o destino a uma sessão
Para adicionar o destino do histograma a uma sessão de Eventos Estendidos, você deve incluir as seguintes instruções ao criar ou alterar uma sessão de evento, de acordo com o tipo de destino desejado:
ADD TARGET package0.histogram
Você pode usar a instrução SET instrução para definir as várias opções. O exemplo a seguir mostra a adição do destino do histograma, onde os dados do evento sqlserver.checkpoint_end são coletados.
ADD TARGET package0.histogram
(SET slots = 32, filtering_event_name = 'sqlserver.checkpoint_end', source_type = 0, source = 'database_id')
Para obter mais informações, consulte Localizar os objetos que detêm a maioria dos bloqueios e Monitorar a atividade do sistema usando Eventos Estendidos.
Revisando a saída de destino
O destino do histograma serializa os dados para um programa de chamada ou para um procedimento em formato XML. A saída do destino não está de acordo com nenhum esquema.
Para revisar a saída de destino do histograma, você pode usar a consulta a seguir com a substituição de session_name pelo nome da sessão de evento.
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'
O exemplo a seguir ilustra o formato de saída de destino do histograma.
<Slots truncated = "0" buckets=[count]>
<Slot count=[count] trunc=[truncated bytes]>
<value>
</value>
</Slot>
</Slots>
Consulte também
Referência
sys.dm_xe_session_targets (Transact-SQL)
CREATE EVENT SESSION (Transact-SQL)
ALTER EVENT SESSION (Transact-SQL)