Extended Events no SQL Server
Este artigo irá explicar qual é a arquitetura dos Extended Events do SQL Server e como configurar uma sessão de monitoração de deadlocks para exemplificar suas funcionalidades e recursos disponíveis.
Todo banco de dados precisa de manutenção e monitoramento. É essencial conhecer em detalhes o ambiente que está sendo analisado e, para isso, é necessário coletar dados que vão desde o consumo de hardware, até o consumo de processamento exercido por determinada aplicação. Nem sempre é uma tarefa fácil conseguir dados importantes que sejam úteis para analisar a causa de um problema e chegar a uma solução. Entender o que está ocorrendo no ambiente em determinado momento é imprescindível para conhecer qual é a melhoria a ser aplicada.
São vários os problemas encontrados entre os mais variados ambientes de bancos de dados existentes. Há queries mal escritas, deadlocks (BOX 1) causados por equívocos de programação, alto consumo de I/O, problemas de leitura ou gravação em dispositivos de armazenamento, sobrecarga de processadores e outras diversas situações que podem impactar na saúde do ambiente de banco de dados.
BOX 1. Definição de Deadlock
Segundo a Microsoft, quando duas tarefas estão bloqueadas de forma permanente por possuírem um recurso que a outra está tentando bloquear, ocorre um deadlock.
Monitorar o ambiente para identificar a causa de um problema ou criar uma linha base para futuras comparações pode ser feito de diversas formas. Há como o usar o SQL Server Profiler, DMVs, data collection e outros meios customizados. No entanto, frente à grande necessidade de monitoramento, a Microsoft investiu nesse aspecto e lançou um novo recurso que veio para agilizar essa tarefa e melhorar a qualidade das análises.
A versão 2008 do SQL Server trouxe uma novidade para auxiliar na monitoração dos ambientes de banco de dados: o Extended Events (XE). Porém, essa ferramenta não foi muito explorada inicialmente por não ter uma interface gráfica nativa em sua primeira versão e, portanto, necessitava de muitas linhas de código para ser configurada. Com isso, o SQL Server Profiler ainda continuou a ser muito utilizado para monitorar ambientes.
Com a chegada da versão 2012, o Extended Events ganhou uma atenção maior por trazer uma interface gráfica nativa no Management Studio, além de ser muito simples e prático em sua utilização. Dessa forma, o XE ganhou uma atenção maior de muitos DBAs e passou a ser mais explorado. Além disso, a Microsoft anunciou também que o SQL Server Profiler será substituído pelo XE em versões futuras, o que torna ainda mais importante o estudo dessa funcionalidade.
O Extended Events foi elaborado para monitorar os eventos apenas quando eles ocorrem, diferente do SQL Server Profiler, que fica analisando o tempo todo, mesmo quando um determinado evento monitorado não está ocorrendo. Por conta disso, o XE exige menos recurso de processamento, aliviando a carga do servidor de banco de dados.
A quantidade de eventos que podem ser monitorados pelo XE é bem superior à do SQL Server Profiler. Enquanto o XE contempla cerca de 872 eventos que podem ser monitorados, o antigo SQL Server Profiler tem capacidade de cerca de 180 eventos. Além disso, informações mais detalhadas podem ser obtidas através do XE.
Um ponto a ser destacado é que o Extended Events já tem eventos de monitoração compatíveis com In-memory, AlwaysOn e ColumnStore Indexes, recursos que o SQL Server Profiler não é compatível." [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo