Loading…

Azure SQL Database – Monitorando a Utilização de Recursos

 

Fala Pessoal,

Continuando a série de posts sobre Azure SQL Database, dessa vez vamos criar uma rotina para que você possa monitorar a view sys.dm_db_resource_stats.

Administramos um banco de dados no Azure onde o cliente não pôde nos liberar acesso ao portal, mas liberou acesso ao SQL via SSMS. Dessa forma, temos que coletar algumas informações via query e popular tabelas para conseguir monitorar melhor o ambiente.

Daí surgiu a necessidade real de monitorar a sys.dm_db_resource_stats.

Essa view retorna informações de CPU, I/O, e consumo de memória para uma database no Azure. A cada 15 segundos é inserida uma linha nessa tabela com informações de performance da base, mesmo que não exista atividades na base. Essa DMV mantém dados históricos por 1 hora.

Maiores informações sobre a view: docs sys.dm_db_resource_stats

Aí entra aquele Job para guardar por mais tempo essas informações. Vamos criar uma rotina que vai rodar de hora em hora salvando esses dados em uma tabela de histórico.

Segue o script completo no nosso Github:

Script rotina para monitorar a utilização de resursos

Ele vai criar uma tabela de histórico e uma procedure para popular essa tabela.

Após criar, basta agendar a procedure stpCarga_Monitoramento_db_resource_stats no azure a cada uma hora.

Nesse post abaixo mostrei como você pode fazer esse agendamento:

https://www.fabriciolima.net/blog/2018/08/13/azure-sql-database-como-criar-um-job-para-executar-uma-procedure/

Após executar uma vez a procedure de carga, já temos as informações que precisamos conforme pode ser visto abaixo:

select top 5 * 
from Log_db_resource_stats
order by avg_cpu_percent desc

Segue o resultado ordenado pelos 5 momentos que mais consumiram CPU na minha base de teste:

É uma informação bem interessante para termos com um histório maior. Dessa forma, conseguimos um baseline de mais tempo do comportamento de performance da nossa base no Azure.

Essa foi mais uma dica de como você pode fazer algo por suas bases no Azure SQL Database.

Até a próxima.

Posts relacionados sobre o Azure SQL Database:

  1. Azure SQL Database – Função getdate() com valor errado no Azure. É isso mesmo?
  2. Azure SQL DB Managed Instance – Introdução
  3. Azure SQL Database – Como fazer um join entre tabelas de bases diferentes?
  4. Azure SQL Database – Quanto posso usar de Transaction Log? É ilimitado?
  5. Azure SQL Database – Como criar um Job para executar uma procedure?
  6. Azure SQL Database – Monitorando o Tamanho das Tabelas
  7. Azure SQL Database – Monitorando a Fragmentação dos Índices
  8. Azure SQL Database – Monitorando a Utilização dos Índices

Gostou da dica?

Curta, comente, compartilhe com os coleguinhas…

Assine meu canal no Youtube e curta minha Página no Facebook para receber Dicas de Leituras e Eventos sobre SQL Server.

Abraços,

Fabrício Lima

Microsoft Data Platform MVP

Consultor e Instrutor SQL Server

Trabalha com SQL Server desde 2006

Deixe uma resposta

%d blogueiros gostam disto: