Database
 sql >> Base de Dados >  >> RDS >> Database

Eventos estendidos para SSAS


Os cubos exigem monitoramento frequente, pois sua produtividade diminui com bastante frequência (lentidão durante a criação de consultas, incremento no tempo de processamento). Para descobrir o motivo da diminuição, precisamos monitorar nosso sistema. Para isso, usamos o SQL Server Profiler. No entanto, a Microsoft está planejando excluir essa ferramenta de rastreamento SQL nas versões subsequentes. A principal desvantagem da ferramenta é a intensidade dos recursos, e ela deve ser executada em um servidor de produção com cuidado, pois pode causar uma perda crítica de produtividade do sistema.

Assim, o Extended Events é um sistema geral de tratamento de eventos para sistemas de servidor. Este sistema suporta a correlação de dados do SQL Server que permite obter eventos de estado do SQL Server.

A arquitetura do sistema é mostrada abaixo:



Na verdade, temos um pacote que contém Eventos, Destinos, Ações, Tipos, Predicados e Mapas. As sessões contendo Eventos, Destinos, Ações são executadas no servidor. Não descreverei a arquitetura em detalhes, pois a ajuda contém uma descrição explícita.

Agora, vamos voltar ao nosso SSAS. Para tornar tudo mais vívido, vamos considerar vários cenários que usamos para análise de problemas.

Primeiro cenário:Análise de processamento do cubo (cubo multidimensional)

Muitas vezes, é o caso quando um cubo está sendo atualizado por muito tempo durante o processamento, embora o volume de dados seja bastante baixo. Para descobrir o motivo, precisamos entender qual consulta ou qual local de processamento causa a lentidão. Claro, podemos executar o processamento em Produção e ver o que está acontecendo, mas não tenho certeza se seus usuários vão gostar. Aqui a Extended Events vem em socorro. Vamos executar nossa sessão e configurar seu salvamento em um arquivo.

Vamos abrir o SSMS e conectar-se ao SSAS e, em seguida, alternar para o Gerenciamento.



Agora, vamos criar uma nova sessão:
  • Na guia Geral, especifique um nome para nossa sessão e carregue um modelo.
  • Os Eventos guia mostra os eventos que nos ajudarão a analisar os problemas. A guia apresenta todos os nossos velhos amigos do Profiler. Vamos selecionar os seguintes eventos para análise de processamento:CommandBegin , CommandEnd, Programa essReportBegin e ProgressReportEnd, ResourseUsage.

CommandBegin , CommandEnd mostrará o início e o fim da execução do comando durante o processamento.

Programa essReportBegin e ProgressReportEn fornecer informações estendidas sobre o comprimento de cada evento e mostrar dados lidos, execução de consultas SQL, comprimento etc.

Uso de recursos mostra o número de recursos que foram gastos na execução de uma consulta, uma ação.



Quando selecionamos os eventos, podemos alternar para a configuração de cada evento e especificar quais eventos devem ser mostrados e quais eventos devem ser ocultados (por exemplo, podemos ocultar o ID do processo).
  • Armazenamento de dados aba. Aqui podemos especificar para mostrar eventos no modo de tempo real ou gravá-los em um arquivo:
    • arquivo_evento – salvar evento em um arquivo para análise posterior. Especifique o tamanho máximo do arquivo e o caminho de destino. Se o tamanho do arquivo exceder o tamanho especificado, um novo arquivo será criado. Além disso, podemos especificar o número de arquivos que devem ser criados (número máximo de arquivos).
    • evento_stream – permite a visualização de eventos no modo em tempo real.
    • ring_buffer – especifica que os dados da sessão devem ser armazenados na memória enquanto o servidor estiver em execução. No caso de recarregamento, os dados serão descartados.
  • O Avançado guia permite configurar recursos (memória, processador) para uma determinada sessão.

Por fim, clique em OK e obter a sessão. Vamos executar o processamento do cubo e ver o processamento por eventos. Mude para o modo de dados ao vivo.

Na parte superior da captura de tela a seguir, podemos ver os eventos que ocorrem agora com nossa instância. Os detalhes dos eventos são mostrados na parte inferior. Qualquer valor dos detalhes do evento pode ser adicionado como uma coluna separada na parte superior. Clique com o botão direito do mouse em um valor selecionado dos detalhes do evento e visualize-os em uma tabela.



No resultado, temos a seguinte visão:



Portanto, os Eventos Estendidos permitem analisar nosso processamento em tempo real. Podemos entender quanto tempo é gasto no processamento de cada objeto, quantos recursos são usados ​​para isso. Isso ajuda a tirar conclusões e encontrar pontos fracos. Além disso, não sobrecarregamos o sistema e não temos perda de produtividade.

Você também pode criar sessão via XMLA. Você pode recuperar o script no GitHub.

A interrupção e a exclusão de uma sessão são possíveis via SSMS e XMLA.
  • Via SSMS (porém, em 2016 ocorre o erro e não consegui excluir sessão via interface).
  • Script XMLA – pode ser baixado aqui.

Esta é a primeira parte do artigo sobre eventos estendidos para SSAS. Na segunda parte, consideraremos um cenário de análise de produtividade de consultas em cubo, trabalhando com arquivo de rastreamento e analisando o arquivo via Power BI.

Recomendo também dar uma olhada nos seguintes posts do blog:
  • Pinal Dave — SQL SERVER – SQL Profiler vs eventos estendidos
  • Chris Web — Profiler, Extended Events e Analysis Services. Embora o autor do artigo afirme que o Profiler quase não é usado em servidores de produção, mas confirma seus problemas com a carga do servidor.
  • Brent Ozar — Eventos estendidos do SQL Server