Você está na página 1de 10

11/07/2023, 14:42 Explorar eventos estendidos - Training | Microsoft Learn

R Anterior Unidade 5 de 10 S Avançar T

" 100 XP

Explorar eventos estendidos


12 minutos

O mecanismo de eventos estendidos no SQL do Azure é um sistema de monitoramento leve e


avançado que permite coletar informações granulares sobre a atividade em seus bancos de
dados e servidores. As soluções de monitoramento na plataforma do Azure permitem que
você configure facilmente o monitoramento poderoso para seu ambiente e forneça respostas
automatizadas às condições de erro.

Os eventos estendidos se baseiam na funcionalidade do SQL Server Profiler permitindo


rastrear consultas e expor dados adicionais (eventos) que você pode monitorar. Exemplos de
problemas que você pode solucionar com os Eventos Estendidos incluem:

Solucionar problemas de desempenho de bloqueio e deadlock.


Identificar consultas de longa execução.
Monitorar operações de DDL (linguagem de definição de dados).
Registrar em log estatísticas de colunas ausentes.
Observar a demanda de memória no seu banco de dados.
Operações de E/S físicas de longa execução.

A estrutura de eventos estendidos também permite que você use filtros para limitar a
quantidade de dados coletados a fim de reduzir a sobrecarga da coleta de dados e permite
que você identifique mais facilmente o problema de desempenho direcionando seu foco para
áreas específicas.

Veja abaixo um exemplo de uma sessão de evento estendido criada no Banco de Dados SQL
do Azure:

https://learn.microsoft.com/pt-br/training/modules/describe-performance-monitoring/5-explore-extended-events 1/10
11/07/2023, 14:42 Explorar eventos estendidos - Training | Microsoft Learn

Na imagem acima, xe_deadlocks é o nome de uma sessão de evento estendida em execução


no banco de dados AdventureWorks (no lado esquerdo da imagem). O nó de destino
event_counter, que está sob seu nó de sessão de evento, conta o número de ocorrências de
cada evento na sessão de evento. Para visualizar os dados de destino no Pesquisador de
Objetos de SSMS, clique com o botão direito do mouse no nó de destino e selecionar Exibir
Dados de Destino. O SSMS exibe os dados como vemos no lado esquerdo da imagem, e os
resultados da contagem de cada evento.

Para obter mais informações, confira Eventos estendidos no Banco de Dados SQL do Azure.

O que posso monitorar com os eventos


estendidos?
Os eventos estendidos cobrem a área de superfície total do SQL Server e são divididos em
quatro canais, que definem o público de um evento.

Administração: os eventos de administração são direcionados para usuários finais e


administradores. Os eventos incluídos indicam um problema dentro de um conjunto
bem definido de ações que um administrador pode tomar. Um exemplo disso é a
geração de um relatório de deadlock XML para ajudar a identificar a causa raiz do
deadlock.
Operacionais: os eventos operacionais são usados para análise e diagnóstico ou
problemas comuns. Esses eventos podem ser usados para disparar uma ação ou tarefa
com base em uma ocorrência do evento. Um exemplo de um evento operacional seria
um banco de dados em um estado de alteração do grupo de disponibilidade, que
indicaria um failover.
https://learn.microsoft.com/pt-br/training/modules/describe-performance-monitoring/5-explore-extended-events 2/10
11/07/2023, 14:42 Explorar eventos estendidos - Training | Microsoft Learn

Analíticos: os eventos analíticos normalmente estão relacionados a eventos de


desempenho e são publicados em grande volume. O rastreamento de procedimento
armazenado ou execução de uma consulta seria exemplo de um evento analítico.
Depuração: os eventos de depuração não estão totalmente documentados e você deve
usá-los apenas para solucionar problemas junto ao suporte da Microsoft.

Os eventos são adicionados às sessões, que podem hospedar vários eventos. Normalmente,
vários eventos são agrupados em uma sessão para capturar um conjunto de informações
relacionado.

Você pode executar a consulta abaixo para obter uma lista dos eventos, ações e destinos
disponíveis:

SQL

SELECT
obj.object_type,
pkg.name AS [package_name],
obj.name AS [object_name],
obj.description AS [description]
FROM sys.dm_xe_objects AS obj
INNER JOIN sys.dm_xe_packages AS pkg ON pkg.guid = obj.package_guid
WHERE obj.object_type in ('action', 'event', 'target')
ORDER BY obj.object_type,
pkg.name,
obj.name;

Criar sessão de eventos estendidos


Você verá abaixo o processo básico de criação de uma sessão de eventos estendidos usando a
caixa de diálogo Nova Sessão do SQL Server Management Studio. Você pode acessar essa tela
expandindo o nó de Gerenciamento no SSMS, expandindo o nó Eventos Estendidos, clicando
com o botão direito do mouse em Sessões e selecionando Nova Sessão.

https://learn.microsoft.com/pt-br/training/modules/describe-performance-monitoring/5-explore-extended-events 3/10
11/07/2023, 14:42 Explorar eventos estendidos - Training | Microsoft Learn

A imagem acima mostra a caixa de diálogo Nova Sessão do recurso de eventos estendidos.
Primeiro você deve nomear a sessão. O SQL Server fornece vários modelos agrupados nas
seguintes categorias:

Bloqueios e Blocos
Equivalentes Profiler
Execução da consulta
Monitoramento do Sistema

Esses modelos predefinidos permitem que você comece rapidamente a usar eventos
estendidos para monitoramento. Neste exemplo, você verá eventos adicionados manualmente
à sessão para se orientar por todas as opções, mas quando se está usando o recurso pela
primeira vez, usar um modelo pode ser uma maneira fácil de criar uma sessão básica.

Você tem algumas opções de seleção para quando iniciar esta sessão. Você pode optar por
iniciar sua nova sessão sempre que o servidor for inicializado ou iniciar a sessão assim que ela
for criada. Os administradores podem iniciar e interromper as sessões de eventos estendidos a
qualquer momento por meio do nó Eventos Estendidos no SQL Server Management Studio.
Você também tem a opção de habilitar o acompanhamento casual, que adiciona um GUID
(identificador global exclusivo) e um número de sequência para a saída de cada evento, o que
permite que você confira facilmente a ordem das etapas em que os eventos ocorreram.

https://learn.microsoft.com/pt-br/training/modules/describe-performance-monitoring/5-explore-extended-events 4/10
11/07/2023, 14:42 Explorar eventos estendidos - Training | Microsoft Learn

A imagem acima mostra a tela em que você adiciona os eventos à sua sessão. Um evento
representa um ponto de interesse no código do mecanismo de banco de dados. Eles podem
representar operações puramente internas do sistema ou podem ser associados à ações do
usuário, como a execução de consulta. No exemplo acima, você pode ver que os eventos
sp_statement_completed , sql_batch_completed e sql_statement_completed foram adicionados

a essa sessão de evento. Por padrão, essa sessão capturaria todas as instâncias desses eventos
ocorrendo na sua instância. Você pode limitar a coleta clicando no botão configurar.

https://learn.microsoft.com/pt-br/training/modules/describe-performance-monitoring/5-explore-extended-events 5/10
11/07/2023, 14:42 Explorar eventos estendidos - Training | Microsoft Learn

A tela de configuração de evento permite definir quais dados você está coletando, já que eles
estão relacionados aos seus eventos. Os campos globais permitem escolher os dados que
você está coletando quando o evento ocorre. Os campos globais também são conhecidos
como ações, porque a ação significa acrescentar campos de dados adicionais ao evento. Esses
campos representam os dados coletados quando o evento estendido ocorre e são comuns na
maioria dos eventos estendidos. A imagem abaixo mostra as opções de filtro para um evento
estendido.

https://learn.microsoft.com/pt-br/training/modules/describe-performance-monitoring/5-explore-extended-events 6/10
11/07/2023, 14:42 Explorar eventos estendidos - Training | Microsoft Learn

Os filtros são um recurso poderoso de Eventos Estendidos que permitem usar o controle
granular para capturar apenas as ocorrências específicas do evento que você deseja. Neste
exemplo, você pode ver que o filtro está sendo aplicado no campo sqlserver.is_system onde
ele é igual a zero, o que indica que a consulta não é uma operação interna. Em outras
palavras, a sessão não capturará a conclusão de instruções enviadas por conexões do sistema,
e o que queremos é capturar apenas instruções enviadas por usuários ou aplicativos de
usuário.

Os filtros se aplicam a apenas um campo em um evento único. Para garantir que não está
rastreando atividades do sistema para nenhum evento, você precisará de um filtro separado
para cada um: o evento sql_statement_completed , o evento sql_batch_completed e o evento
sp_statement_completed .

É uma boa prática configurar um filtro para cada evento que está sendo capturado. Isso ajuda
a melhorar a eficiência da coleta de dados e permite que você estreite o foco da sua pesquisa.

A imagem abaixo mostra os campos de evento coletados. Eles são específicos do evento que
está sendo disparado e podem incluir campos opcionais para coleta. No evento acima, você
pode ver que as opções de coleção opcionais são statement e parameterized_plan_handle .

https://learn.microsoft.com/pt-br/training/modules/describe-performance-monitoring/5-explore-extended-events 7/10
11/07/2023, 14:42 Explorar eventos estendidos - Training | Microsoft Learn

Depois de ter definido uma sessão do evento, você definirá um destino de armazenamento,
conforme mostrado na imagem abaixo.

https://learn.microsoft.com/pt-br/training/modules/describe-performance-monitoring/5-explore-extended-events 8/10
11/07/2023, 14:42 Explorar eventos estendidos - Training | Microsoft Learn

Uma sessão de evento estendido tem um destino e ele pode ser considerado apenas um lugar
para o mecanismo controlar as ocorrências de um evento. Dois dos destinos mais comuns são
arquivo de evento, que é um arquivo no sistema que pode armazenar eventos e, nas ofertas de
PaaS do SQL do Azure, esses dados são gravados em um armazenamento de blob. Outro
destino comum é o buffer em anel que está dentro da memória do SQL Server. O buffer em
anel é mais usado para a observação ao vivo de uma sessão de evento, porque ele é um
buffer circular e os dados não são mantidos além de uma sessão. A maioria dos destinos
processa os dados de forma assíncrona, o que significa que os dados do evento são gravados
na memória antes de terem persistido no disco. A exceção é o ETW (destino de rastreamento
de eventos do Windows) e os destinos do contador de eventos processados de forma
síncrona.

A tabela a seguir contém informações e usos para cada tipo de destino de Eventos Estendidos.

Target (destino) Descrição Processing

Contador de eventos Conta todos os eventos ocorridos durante uma Síncrono


sessão de Eventos Estendidos. Ele é usado para obter
informações sobre as características de uma carga de
trabalho quando ela não tem a sobrecarga de uma
coleção de eventos completa.

Arquivo de Evento Grava a saída da sessão do evento da memória no Assíncronos


arquivo persistente no disco.

Emparelhamento de Muitos eventos que geralmente ocorrem em pares Assíncronos


eventos (por exemplo, aquisição de bloqueio, liberação de
bloqueio) se adicionados a essa coleção podem ser
usados para identificar quando esses eventos não
ocorrem em um conjunto correspondente.

ETW (Rastreamento Usado para correlacionar eventos do SQL Server com Síncrono
de Eventos para os dados de evento do SO do Windows.
Windows)

Histograma Ele é semelhante ao contador de eventos, que conta Assíncronos


as ocorrências de um evento. A diferença é que o
histograma pode contar com base em uma ação ou
coluna de evento específica.

Buffer em Anel Usado para armazenar dados na memória. Os dados Assíncronos


não persistem no disco e talvez sejam

https://learn.microsoft.com/pt-br/training/modules/describe-performance-monitoring/5-explore-extended-events 9/10
11/07/2023, 14:42 Explorar eventos estendidos - Training | Microsoft Learn

Target (destino) Descrição Processing

frequentemente liberados do buffer

Como alternativa, você pode criar uma sessão de eventos estendidos usando T-SQL. Os
seguintes comandos T-SQL fornecem um exemplo de como criar uma sessão de eventos
estendidos:

SQL

IF EXISTS (SELECT * FROM sys.server_event_sessions WHERE name='test_session')


DROP EVENT session test_session ON SERVER;
GO

CREATE EVENT SESSION test_session


ON SERVER
ADD EVENT sqlos.async_io_requested,
ADD EVENT sqlserver.lock_acquired
ADD TARGET package0.etw_classic_sync_target (SET
default_etw_session_logfile_path = N'C:\demo\traces\sqletw.etl' )
WITH (MAX_MEMORY=4MB, MAX_EVENT_SIZE=4MB);
GO

As sessões de evento podem ser delimitadas para um servidor ou um banco de dados. No


exemplo mostrado acima, você está adicionando dois eventos e usando o caminho ETW
(rastreamento de eventos para Windows), com um local de arquivo. Depois de criar a sessão,
você precisará iniciá-la. Você pode fazer isso por meio do T-SQL e da sessão de ALTER usando
a opção STATE , ou pode usar o SQL Server Management Studio para isso.

Unidade seguinte: Descrever o Azure SQL Insights

Continuar T

https://learn.microsoft.com/pt-br/training/modules/describe-performance-monitoring/5-explore-extended-events 10/10

Você também pode gostar