Como monitorar o desempenho do banco de dados
A maior parte das técnicas de solução de problemas que você usaria para solucionar problemas de desempenho do banco de dados permanece a mesma no SQL do Azure.
Todas as ferramentas que normalmente são utilizadas para monitorar e solucionar problemas do SQL Server também são aplicáveis ao SQL Server em execução na Máquina Virtual do Azure, incluindo ferramentas como Monitor de Desempenho. Entretanto, devido à natureza da Plataforma como Serviço (PaaS), o Banco de Dados SQL do Azure e a Instância Gerenciada do SQL do Azure fornecem um conjunto diferente de ferramentas. Avançaremos para explorar as ferramentas específicas para as ofertas de PaaS do Azure e suas funções.
Compare os resultados de desempenho com sua linha de base
O processo de estabelecimento de uma linha de base geralmente começa bem antes da migração real do banco de dados. Isso envolve a coleção de um conjunto abrangente de medições de dados que refletem o desempenho padrão do banco de dados em seu ambiente original. Essas medidas podem incluir, mas não se limitam, ao uso da CPU, os tempos de resposta, as taxas de transação e as taxas de erro.
Essa linha de base é fornecida como um ponto de referência com o qual o desempenho do banco de dados migrado pode ser comparado. Entretanto, a avaliação ou comparação desses dados de linha de base com as métricas de desempenho do banco de dados migrado só ocorre após a migração ter sido concluída.
Após a migração, o desempenho do novo ambiente de banco de dados é monitorado e medido. Essas métricas pós-migração são então comparadas com a linha de base pré-migração para identificar quaisquer discrepâncias ou problemas de desempenho. Essa comparação ajuda a entender se a migração teve algum efeito adverso no desempenho do banco de dados ou se existem áreas que exigem otimização para melhorar o desempenho.
Ajuste automático
O ajuste automático é um recurso que aprende continuamente com sua carga de trabalho, identifica possíveis problemas e melhorias e oferece recomendações com base nos dados do Repositório de Dados de Consultas. Ele se adapta às alterações nos planos de execução causadas por modificações do esquema ou índice, ou atualizações de dados.
Você pode aplicar manualmente as recomendações de ajuste usando o portal do Azure ou permitir que o ajuste automático aplique as recomendações de ajuste de maneira autônoma para você. No Banco de Dados SQL do Azure, ele também pode melhorar o desempenho da consulta ajustando os índices.
Correção automática de plano
Com a ajuda do Repositório de Dados de Consultas, o mecanismo de banco de dados pode detectar quando os planos de execução de consultas regrediram em termos de desempenho. Embora você possa identificar manualmente um plano regressivo por meio da interface do usuário, o Repositório de Consultas também fornece a opção de notificar você automaticamente.
No exemplo dado, aparece uma marca de verificação ao lado de ID do Plano 1, indicando que o plano é forçado.
Uma vez que você habilitou o ajuste automático, o mecanismo de banco de dados aplicará automaticamente qualquer plano de execução de consulta sugerido nas seguintes condições:
- A taxa de erro do plano anterior excede a do plano recomendado
- O ganho estimado de CPU ultrapassa 10 segundos
- O plano forçado supera o anterior
Quando ocorre a imposição automática do plano, o mecanismo de banco de dados aplica o último bom plano e monitora seu desempenho. Se o plano forçado não tiver um desempenho melhor do que o plano anterior, ele não será forçado e um novo plano será compilado. Se o desempenho for superior ao do plano anterior, ele permanecerá forçado até que ocorra uma recompilação.
Use a seguinte consulta T-SQL para habilitar a correção automática do plano.
ALTER DATABASE [WideWorldImporters] SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON);
Você pode exibir as recomendações de ajuste automático por meio da exibição do gerenciamento dinâmico, sys.dm_db_tuning_recommendations
. Essa DMV fornece detalhes, tipos e estados de recomendação. Para verificar se o ajuste automático está habilitado para um banco de dados, consulte a exibição sys.database_automatic_tuning_options
.
O ajuste automático para a Instância Gerenciada do SQL do Azure dá suporte apenas a FORCE LAST GOOD PLAN
.
Para habilitar notificações para o ajuste automático, consulte Notificações por email para o ajuste automático
Gerenciamento de índice automático
O Banco de Dados SQL do Azure dá suporte ao ajuste automático de índices. Isso significa que, com o tempo, o banco de dados tem a capacidade de aprender sobre as cargas de trabalho existentes e fornecer recomendações sobre a adição ou remoção de índices para proporcionar melhor desempenho. Assim como forçar planos de consulta aprimorados, o banco de dados pode ser configurado para permitir a criação ou remoção automática de índices, dependendo do desempenho do índice existente.
Alternativamente, utilize a seguinte consulta para ver os recursos de ajuste automático habilitados no seu banco de dados.
SELECT name,
desired_state_desc,
actual_state_desc,
reason_desc
FROM sys.database_automatic_tuning_options
A criação de índices consome muitos recursos, e sua criação bem-sucedida é crítica para garantir que não haja efeito negativo nas suas cargas de trabalho.
O Banco de Dados SQL do Azure monitora os recursos necessários para implementar novos índices automaticamente para evitar a degradação do desempenho. A ação de ajuste é adiada até que os recursos estejam disponíveis, por exemplo, quando os recursos necessários para as cargas de trabalho existentes impedem a criação de índices.
Explorar a Análise de Desempenho de Consultas
A fase inicial de qualquer tarefa de otimização de desempenho do banco de dados envolve a identificação das consultas que consomem mais recursos. Nas versões anteriores do SQL Server, isso exigia um rastreamento extensivo e um conjunto de intrincados scripts SQL, o que tornava o processo de coleta de dados trabalhoso.
Identificar consultas problemáticas
O Banco de Dados SQL do Azure oferece uma ferramenta chamada Análise de Desempenho de Consultas que permite ao administrador identificar rapidamente as consultas dispendiosas. Você a encontra na folha principal do seu Banco de Dados SQL do Azure, na seção Desempenho inteligente.
O Query Performance Insight no Banco de Dados SQL do Azure oferece três opções de filtragem: para consultas de execução prolongada, consultas que consomem os principais recursos (que é o padrão) ou um filtro personalizado. Ele exibe as cinco principais consultas classificadas por um recurso escolhido, como CPU, IO de dados ou IO de logon. Você pode detalhar nas consultas individuais selecionando a linha na grade inferior. Cada linha é marcada com uma cor distinta que corresponde à cor do gráfico de barras.
A guia personalizada oferece mais flexibilidade ao invés das outras opções. Ele permite um exame mais personalizado dos dados de desempenho com vários menus removíveis que influenciam a visualização dos dados. As principais métricas incluem CPU, Log IO, Data IO e memória, que são aspectos de desempenho limitados pela camada de serviço e pelos recursos de computação do Banco de Dados SQL do Azure.
Se nos aprofundarmos em uma consulta individual, poderemos ver a ID da consulta e a própria consulta, bem como o tipo de agregação da consulta e o período associado.
Embora a Análise de Desempenho de Consultas não mostre o plano de execução da consulta, você pode identificar rapidamente essa consulta e usar as informações para extrair o plano do Repositório de Consultas no banco de dados.
Alertas
Você pode configurar alertas de desempenho para os bancos de dados do Banco de Dados SQL do Azure utilizando o portal do Microsoft Azure. Esses alertas podem notificar você por email ou chamar um webhook quando uma determinada métrica (como tamanho do banco de dados ou uso da CPU) atingir um limite.
O processo de configuração de alertas é semelhante entre o Banco de Dados SQL e a Instância Gerenciada de SQL. Para configurar alertas de desempenho para o Banco de Dados SQL do Azure, navegue até a seção Monitoramento e selecione Alertas. A partir daí, você precisa estabelecer uma nova regra de alerta, definir uma condição e criar um grupo de ações.
Para obter mais informações sobre alertas para a Instância Gerenciada de SQL do Azure, você pode visitar Criar alertas para a Instância Gerenciada de SQL do Azure utilizando o portal do Azure. Se você estiver interessado no Banco de Dados SQL do Azure, consulte Criar alertas para o Banco de Dados SQL do Azure e o Azure Synapse Analytics utilizando o portal do Microsoft Azure.
Azure SQL Insights
O Azure SQL Insights aprimora sua experiência de monitoramento ao fornecer visualizações interativas e prontas para uso. Você pode personalizar a coleção e a frequência da telemetria e combinar dados de várias fontes em uma única experiência de monitoramento. Ele também retém um conjunto de métricas ao longo do tempo, o que permite investigar problemas de desempenho que você pode ter tido no passado.
Importante
Sugerimos configurar o Azure SQL Insights somente após o banco de dados migrado ter sido totalmente integrado na produção. Isso impede que a ferramenta capture dados ruidosos durante a fase de migração e teste.
Para começar a usar o SQL Insights, você precisa de uma máquina virtual dedicada que monitore e colete remotamente dados dos seus servidores SQL. Essa máquina virtual dedicada precisa ter os seguintes componentes instalados:
- Agente do Azure Monitor
- Extensão de Insights de Carga de Trabalho
Além disso, os seguintes componentes são obrigatórios para configurar o SQL Insights.
Perfil de monitoramento – agrupe os servidores, as instâncias ou os bancos de dados a serem monitorados.
Workspace do Log Analytics – para onde enviar os dados de monitoramento de SQL.
Configurações de coleta – você pode personalizar a coleta de dados para seu perfil. As configurações padrão abrangem a maioria dos cenários de monitoramento e geralmente não precisam ser alteradas.
Eventos estendidos
A ferramenta Eventos Estendidos é um sistema de monitoramento robusto que captura a atividade detalhada do servidor e do banco de dados. Os filtros podem ser aplicados para reduzir a sobrecarga da coleta de dados e focar em problemas específicos de desempenho. Todas as ofertas do SQL do Azure dão suporte a Eventos Estendidos.
Embora a instalação de Eventos Estendidos seja semelhante no SQL Server, no Banco de Dados SQL do Azure e na Instância Gerenciada do SQL do Azure, este módulo se concentra em suas diferenças, não em ensinar o processo de instalação.
Aqui estão algumas diferenças importantes ao configurar os eventos estendidos no Banco de Dados SQL do Azure:
Transact-SQL: ao executar o comando
CREATE EVENT SESSION
no SQL Server, você deve usar a cláusulaON SERVER
. Porém, no Banco de Dados SQL do Azure, você deve usar a cláusulaON DATABASE
. A cláusulaON DATABASE
também se aplica aos comandosALTER EVENT SESSION
eDROP EVENT SESSION
comandos Transact-SQL. O Banco de Dados SQL do Azure dá suporte apenas a sessões com escopo de banco de dados.Sessões com escopo de banco de dados: os eventos estendidos são baseados no modelo de isolamento de locatário único no Banco de Dados SQL do Azure. Uma sessão de evento em um banco de dados não pode acessar os dados ou eventos de outro banco de dados. Não é possível emitir uma instrução
CREATE EVENT SESSION
no contexto do banco de dados mestre¹.Armazenamento: como você não tem acesso ao sistema de arquivos do servidor em que o seu banco de dados reside no Banco de Dados SQL do Azure, você pode configurar um destino de conta de armazenamento para os repositório das suas sessões de eventos estendidos.