Partilhar via


Query Performance Insight para a Base de Dados SQL do Azure

Aplica-se a:Banco de Dados SQL do Azure

O Query Performance Insight disponibiliza análise de consultas inteligente para bases de dados individuais e de conjunto. Ajuda a identificar as principais consultas que consomem recursos e de execução prolongada na sua carga de trabalho. Deste modo, ajuda a localizar as consultas que devem ser otimizadas para melhorar o desempenho geral da carga de trabalho e utilizar eficientemente o recurso que está a pagar. O Query Performance Insight ajuda-o a passar menos tempo a resolver problemas de desempenho de bases de dados ao fornecer:

  • Informações mais detalhadas sobre o consumo de recursos de bancos de dados (DTU)
  • Detalhes sobre as principais consultas de banco de dados por CPU, duração e contagem de execução (potenciais candidatos a ajuste para melhorias de desempenho)
  • A capacidade de detalhar detalhes de uma consulta, exibir o texto da consulta e o histórico de utilização de recursos
  • Anotações que mostram recomendações de desempenho de consultores de banco de dados

Query Performance Insight

Pré-requisitos

O Query Performance Insight requer que o Repositório de Consultas esteja ativo em seu banco de dados. É automaticamente ativado para todas as bases de dados na Base de Dados SQL do Azure por predefinição. Se o Query Store não estiver em execução, o portal do Azure irá pedir-lhe para o ativar.

Nota

Se a mensagem "O Query Store não está devidamente configurado nesta base de dados" aparecer no portal, veja Otimizar a configuração do Query Store.

Permissões

Precisa das seguintes permissões de controlo de acesso baseado em funções do Azure (Azure RBAC) para utilizar o Query Performance Insight:

  • As permissões de Leitor, Proprietário, Colaborador, Colaborador do Banco de Dados SQL ou Colaborador do SQL Server são necessárias para exibir as principais consultas e gráficos que consomem recursos.
  • As permissões de Proprietário, Colaborador, Colaborador do Banco de Dados SQL ou Colaborador do SQL Server são necessárias para exibir o texto da consulta.

Utilizar o Query Performance Insight

O Query Performance Insight é fácil de usar:

  1. Abra o portal do Azure e localize um banco de dados que você deseja examinar.

  2. No menu do lado esquerdo, abra o Intelligent Performance>Query Performance Insight.

    Query Performance Insight on the menu

  3. Na primeira guia, revise a lista das principais consultas que consomem recursos.

  4. Selecione uma consulta individual para exibir seus detalhes.

  5. Abra as recomendações de desempenho inteligente>e verifique se há recomendações de desempenho disponíveis. Para obter mais informações sobre recomendações de desempenho internas, consulte Azure SQL Database Advisor.

  6. Use controles deslizantes ou ícones de zoom para alterar o intervalo observado.

    Performance dashboard

Nota

Para que o Banco de Dados SQL do Azure renderize as informações no Query Performance Insight, o Repositório de Consultas precisa capturar algumas horas de dados. Se o banco de dados não tiver atividade ou se o Repositório de Consultas não estiver ativo durante um determinado período, os gráficos ficarão vazios quando o Query Performance Insight exibir esse intervalo de tempo. Você pode habilitar o Repositório de Consultas a qualquer momento se ele não estiver em execução. Para obter mais informações, consulte Práticas recomendadas com o Repositório de Consultas.

Para recomendações de desempenho do banco de dados, selecione Recomendações na folha de navegação do Query Performance Insight.

The Recommendations tab

Analise as principais consultas que consomem CPU

Por padrão, o Query Performance Insight mostra as cinco principais consultas que consomem CPU quando você o abre pela primeira vez.

  1. Marque ou desmarque consultas individuais para incluí-las ou excluí-las do gráfico usando caixas de seleção.

    A linha superior mostra a porcentagem geral de DTU para o banco de dados. As barras mostram a porcentagem de CPU que as consultas selecionadas consumiram durante o intervalo selecionado. Por exemplo, se a opção Semana passada estiver selecionada, cada barra representará um único dia.

    Top queries

    Importante

    A linha DTU mostrada é agregada a um valor máximo de consumo em períodos de uma hora. Destina-se a uma comparação de alto nível apenas com estatísticas de execução de consultas. Em alguns casos, a utilização da DTU pode parecer muito alta em comparação com consultas executadas, mas esse pode não ser o caso.

    Por exemplo, se uma consulta atingiu o máximo de DTU para 100% por apenas alguns minutos, a linha DTU no Query Performance Insight mostrará toda a hora de consumo como 100% (a consequência do valor máximo agregado).

    Para uma comparação mais fina (até um minuto), considere criar um gráfico de utilização de DTU personalizado:

    1. No portal do Azure, selecione Monitoramento do Banco de Dados SQL do> Azure.
    2. Selecione Métricas.
    3. Selecione +Adicionar gráfico.
    4. Selecione a porcentagem de DTU no gráfico.
    5. Além disso, selecione Últimas 24 horas no menu superior esquerdo e altere-o para um minuto.

    Use o gráfico DTU personalizado com um nível mais fino de detalhes para comparar com o gráfico de execução de consulta.

    A grade inferior mostra informações agregadas para as consultas visíveis:

    • ID de consulta, que é um identificador exclusivo para a consulta no banco de dados.
    • CPU por consulta durante um intervalo observável, que depende da função de agregação.
    • Duração por consulta, que também depende da função de agregação.
    • Número total de execuções para uma consulta específica.
  2. Se os dados ficarem obsoletos, selecione o botão Atualizar .

  3. Use controles deslizantes e botões de zoom para alterar o intervalo de observação e investigar picos de consumo:

    Sliders and zoom buttons for changing the interval

  4. Opcionalmente, você pode selecionar a guia Personalizar para personalizar a exibição para:

    • Métrica (CPU, duração, contagem de execução).
    • Intervalo de tempo (últimas 24 horas, semana passada ou mês passado).
    • Número de consultas.
    • Função de agregação.

    Custom tab

  5. Selecione o botão Ir > para ver a vista personalizada.

    Importante

    O Query Performance Insight está limitado a exibir as 5 a 20 principais consultas consumidoras, dependendo da sua seleção. Seu banco de dados pode executar muito mais consultas além das principais mostradas, e essas consultas não serão incluídas no gráfico.

    Pode existir um tipo de carga de trabalho de banco de dados em que muitas consultas menores, além das principais mostradas, são executadas com frequência e usam a maioria das DTU. Essas consultas não aparecem no gráfico de desempenho.

    Por exemplo, uma consulta pode ter consumido uma quantidade substancial de DTU por um tempo, embora seu consumo total no período observado seja menor do que as outras consultas de consumo superior. Nesse caso, a utilização de recursos dessa consulta não apareceria no gráfico.

    Se você precisar entender as principais execuções de consulta além das limitações do Query Performance Insight, considere usar o Azure SQL Insights para monitoramento avançado de desempenho de banco de dados e solução de problemas.

Ver detalhes individuais da consulta

Para visualizar os detalhes da consulta:

  1. Selecione qualquer consulta na lista das principais consultas.

    List of top queries

    Abre-se uma vista detalhada. Ele mostra o consumo da CPU, a duração e a contagem de execução ao longo do tempo.

  2. Selecione os recursos do gráfico para obter detalhes.

    • O gráfico superior mostra uma linha com a porcentagem geral de DTU do banco de dados. As barras são a porcentagem de CPU que a consulta selecionada consumiu.
    • O segundo gráfico mostra a duração total da consulta selecionada.
    • O gráfico inferior mostra o número total de execuções pela consulta selecionada.

    Query details

  3. Opcionalmente, use controles deslizantes, use botões de zoom ou selecione Configurações para personalizar como os dados de consulta são exibidos ou para escolher um intervalo de tempo diferente.

    Importante

    O Query Performance Insight não captura nenhuma consulta DDL. Em alguns casos, ele pode não capturar todas as consultas ad hoc.

    Caso seu banco de dados esteja com o escopo bloqueado com um bloqueio somente leitura, a folha de detalhes da consulta não poderá ser carregada.

Rever as principais consultas por duração

Duas métricas no Query Performance Insight podem ajudá-lo a encontrar possíveis gargalos: duração e contagem de execução.

As consultas de longa duração têm o maior potencial para bloquear recursos por mais tempo, bloquear outros usuários e limitar a escalabilidade. Eles também são os melhores candidatos para otimização. Para obter mais informações, consulte Compreender e resolver problemas de bloqueio do Azure SQL.

Para identificar consultas de longa duração:

  1. Abra a guia Personalizar no Query Performance Insight para o banco de dados selecionado.

  2. Altere as métricas para duração.

  3. Selecione o número de consultas e o intervalo de observação.

  4. Selecione a função de agregação:

    • A soma soma todo o tempo de execução da consulta para todo o intervalo de observação.
    • Max encontra consultas em que o tempo de execução foi máximo para todo o intervalo de observação.
    • O Avg localiza o tempo médio de execução de todas as execuções de consulta e mostra as principais para essas médias.

    Query duration

  5. Selecione o botão Ir > para ver a vista personalizada.

    Importante

    O ajuste do modo de exibição de consulta não atualiza a linha DTU. A linha DTU sempre mostra o valor máximo de consumo para o intervalo.

    Para entender o consumo de DTU do banco de dados com mais detalhes (até um minuto), considere criar um gráfico personalizado no portal do Azure:

    1. Selecione Monitoramento do Banco de Dados SQL do> Azure.
    2. Selecione Métricas.
    3. Selecione +Adicionar gráfico.
    4. Selecione a porcentagem de DTU no gráfico.
    5. Além disso, selecione Últimas 24 horas no menu superior esquerdo e altere-o para um minuto.

    Recomendamos que você use o gráfico DTU personalizado para comparar com o gráfico de desempenho da consulta.

Revisar as principais consultas por contagem de execução

Um aplicativo de usuário que usa o banco de dados pode ficar lento, mesmo que um alto número de execuções possa não estar afetando o próprio banco de dados e o uso de recursos seja baixo.

Em alguns casos, uma alta contagem de execução pode levar a mais viagens de ida e volta da rede. As viagens de ida e volta afetam o desempenho. Eles estão sujeitos à latência da rede e à latência do servidor downstream.

Por exemplo, muitos sites orientados por dados acessam fortemente o banco de dados para cada solicitação do usuário. Embora o pool de conexões ajude, o aumento do tráfego de rede e da carga de processamento no servidor pode diminuir o desempenho. Em geral, mantenha as viagens de ida e volta ao mínimo.

Para identificar consultas executadas com frequência ("tagarelas"):

  1. Abra a guia Personalizar no Query Performance Insight para o banco de dados selecionado.

  2. Altere as métricas para contagem de execução.

  3. Selecione o número de consultas e o intervalo de observação.

  4. Selecione o botão Ir > para ver a vista personalizada.

    Query execution count

Compreender as anotações de ajuste de desempenho

Ao explorar sua carga de trabalho no Query Performance Insight, você pode notar ícones com uma linha vertical na parte superior do gráfico.

Estes ícones são anotações. Eles mostram recomendações de desempenho do Consultor do Banco de Dados SQL do Azure. Ao passar o mouse sobre uma anotação, você pode obter informações resumidas sobre recomendações de desempenho.

Query annotation

Se quiser entender mais ou aplicar a recomendação do orientador, selecione o ícone para abrir os detalhes da ação recomendada. Se esta for uma recomendação ativa, pode aplicá-la imediatamente a partir do portal.

Query annotation details

Em alguns casos, devido ao nível de zoom, é possível que anotações próximas umas das outras sejam recolhidas em uma única anotação. O Query Performance Insight representa isso como um ícone de anotação de grupo. Selecionar o ícone de anotação de grupo abre uma nova folha que lista as anotações.

Correlacionar consultas e ações de ajuste de desempenho pode ajudá-lo a entender melhor sua carga de trabalho.

Otimizar a configuração do Repositório de Consultas

Ao usar o Query Performance Insight, você pode ver as seguintes mensagens de erro do Query Store:

  • "O Repositório de Consultas não está configurado corretamente neste banco de dados. Clique aqui para saber mais."
  • "O Repositório de Consultas não está configurado corretamente neste banco de dados. Clique aqui para alterar as definições."

Essas mensagens geralmente aparecem quando o Repositório de Consultas não consegue coletar novos dados.

O primeiro caso acontece quando o Repositório de Consultas está no estado somente leitura e os parâmetros são definidos de forma otimizada. Você pode corrigir isso aumentando o tamanho do armazenamento de dados ou limpando o Repositório de Consultas. (Se você limpar o Repositório de Consultas, toda a telemetria coletada anteriormente será perdida.)

Query Store details

O segundo caso acontece quando o Repositório de Consultas não está habilitado ou os parâmetros não são definidos de forma ideal. Você pode alterar a política de retenção e captura, e também habilitar o Repositório de Consultas, executando os seguintes comandos T-SQL fornecidos pelo editor de consultas do portal do Azure, SQL Server Management Studio (SSMS), Azure Data Studio, sqlcmd ou a ferramenta de cliente de sua escolha.

Existem dois tipos de políticas de retenção:

  • Com base no tamanho: se esta política estiver definida como AUTO, ela limpará os dados automaticamente quando o tamanho quase máximo for atingido.
  • Com base no tempo: por padrão, essa política é definida como 30 dias. Se o Repositório de Consultas ficar sem espaço, ele excluirá as informações de consulta com mais de 30 dias.

Você pode definir a política de captura para:

  • Todos: o Repositório de Consultas captura todas as consultas.
  • Automático: o Repositório de Consultas ignora consultas pouco frequentes e consultas com duração de compilação e execução insignificantes. Os limites para contagem de execução, duração da compilação e duração do tempo de execução são determinados internamente. Esta é a opção padrão.
  • Nenhum: o Repositório de Consultas para de capturar novas consultas, mas as estatísticas de tempo de execução para consultas já capturadas ainda são coletadas.

Recomendamos definir todas as políticas como AUTO e a política de limpeza para 30 dias executando os seguintes comandos do SSMS ou do portal do Azure. (Substitua YourDB pelo nome do banco de dados.)

    ALTER DATABASE [YourDB]
    SET QUERY_STORE (SIZE_BASED_CLEANUP_MODE = AUTO);

    ALTER DATABASE [YourDB]
    SET QUERY_STORE (CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 30));

    ALTER DATABASE [YourDB]
    SET QUERY_STORE (QUERY_CAPTURE_MODE = AUTO);

Aumente o tamanho do Repositório de Consultas conectando-se a um banco de dados por meio do SSMS ou do portal do Azure e executando a consulta a seguir. (Substitua YourDB pelo nome do banco de dados.)

    ALTER DATABASE [YourDB]
    SET QUERY_STORE (MAX_STORAGE_SIZE_MB = 1024);

A aplicação dessas configurações acabará fazendo com que o Repositório de Consultas colete telemetria para novas consultas. Se precisar que o Repositório de Consultas esteja operacional imediatamente, você pode, opcionalmente, optar por limpar o Repositório de Consultas executando a seguinte consulta por meio do SSMS ou do portal do Azure. (Substitua YourDB pelo nome do banco de dados.)

Nota

A execução da consulta a seguir excluirá toda a telemetria monitorada coletada anteriormente no Repositório de Consultas.

    ALTER DATABASE [YourDB] SET QUERY_STORE CLEAR;

Próximos passos

Considere usar o Azure SQL Analytics para monitoramento avançado de desempenho de uma grande frota de bancos de dados únicos e em pool, pools elásticos, instâncias gerenciadas e bancos de dados de instância.