Análise de desempenho de consultas

Importante

Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.

Esta página descreve os insights de desempenho que Azure Databricks retorna no histórico de consultas e como agir sobre eles.

Quando consultas são executadas, o Azure Databricks pode retornar insights que identificam oportunidades para melhorar o desempenho, ou que reportam otimizações já aplicadas.

Encontre insights e recomendações para sua consulta

Os insights aparecem no histórico de consultas e no perfil de consulta. O painel de detalhes da consulta mostra um resumo dos insights, classificados por seu efeito estimado sobre a duração total da tarefa. A guia Insights de desempenho no perfil de consulta mostra todos os detalhes de cada insight.

Otimizar com o Genie Code

Quando uma consulta tiver insights acionáveis, selecione Otimizar para abrir o Genie Code. Para obter insights que exigem uma alteração de consulta, o Genie Code reescreve a consulta e apresenta as alterações para sua aprovação. Para insights que envolvem alterações de tabela ou computação, o Genie Code resume as ações recomendadas como texto em linguagem simples.

Para saber mais sobre como trabalhar com o Genie Code, consulte Genie Code.

Insights de otimização de consulta

COVERAGE_FILTER_KEYS_CLUSTERING

A tabela é agrupada por uma ou mais chaves que não são usadas em filtros durante a verificação da tabela.

Recomendação: Adicione filtros nas chaves de clustering para reduzir a leitura de bytes.

COVERAGE_FILTER_KEYS_PARTITIONING

A tabela é particionada por uma ou mais chaves que não são usadas em filtros durante a verificação da tabela.

Recomendação: Adicione filtros nas chaves de particionamento para reduzir a leitura de bytes.

COVERAGE_PHOTON

O Photon não pode acelerar essa operação, portanto, a consulta usa o mecanismo de runtime padrão.

Recomendação: Examine as limitações do Photon e ajuste a consulta para usar um caminho de execução com suporte.

EXPLODING_JOIN

A junção produz significativamente mais linhas do que lê.

Recomendação: Determine qual subconjunto de resultado você precisa e atualize a condição de junção ou reduza o número de linhas de entrada de ambas as relações.

FLOW_FULL_RECOMPUTE

O fluxo é executado como uma recompute completa.

Recomendação: Reescreva a consulta para suporte incremental para reduzir a leitura de bytes.

REDUNDANT_AGGREGATION

Uma operação de agregação não alterou o resultado da consulta.

Recomendação: Remova a agregação ou aplique restrições de chave primária e estrangeira.

REDUNDANT_JOIN

Uma junção externa não alterava a contagem de linhas do lado externo, e nenhuma coluna da tabela unida era utilizada.

Recomendação: Remova a junção ou aplique restrições de chave primária ou únicas.

SELECTIVE_JOIN

A junção produz significativamente menos linhas do que lê.

Recomendação: Determine qual subconjunto de resultado você precisa e adicione filtros antes da junção para reduzir as linhas de entrada.

WIDE_PROJECTION

A consulta projeta todas as colunas da tabela.

Recomendação: Project apenas as colunas necessárias para reduzir a leitura de bytes.

Insights de layout de dados

ESCRITA_CONCORRENTE

Gravações simultâneas na tabela causam conflitos que são resolvidos ou falham automaticamente.

Recomendação: Examine o histórico delta para identificar gravações simultâneas e ajustar o agendamento para evitar conflitos.

COVERAGE_STATS_DELTA

As estatísticas de Delta data skipping estão ausentes ou incompletas para os filtros de arquivos da varredura de tabela, portanto, a consulta usa a filtragem no arquivo.

O status das estatísticas para cada filtro pode ser um dos seguintes:

  • Cheio: As estatísticas estão disponíveis para todos os filtros.
  • Parcial: As estatísticas estão disponíveis para um subconjunto de filtros.
  • Indisponível: As estatísticas não estão disponíveis para nenhum filtro.
  • Utilizadas: As estatísticas não podem ser usadas porque o filtro converte o tipo de dados.

Recomendação:coletar estatísticas delta para reduzir a leitura de bytes.

COVERAGE_STATS_OPTIMIZER

As estatísticas do otimizador baseado em custo estão ausentes ou incompletas, portanto, o plano de consulta usa heurística padrão.

Recomendação:coletar estatísticas para habilitar o otimizador a produzir um plano melhor.

DESVIO_DE_DADOS

Os dados são distribuídos de forma desigual entre os recursos de computação.

Recomendação: Examine a distribuição de dados e, em seguida, use o sal de chaves ou a pré-agregação para equilibrar a carga de trabalho.

MANUAL_DATA_LAYOUT

A tabela é otimizada manualmente e pode se beneficiar do Agrupamento Automático de Líquidos.

Recommendations:

  • Converta a tabela de externa para gerenciada para melhor desempenho e manutenção automática.
  • Habilite a Otimização Preditiva na tabela para operações de manutenção automática.
  • Habilite o clustering automático na tabela para reduzir a leitura de bytes.

Insights de computação e recursos

DATA_SPILL

Dados derramados no disco durante a execução da consulta porque os dados não se encaixavam na memória.

Recomendação: Aumente o tamanho do armazém para adicionar memória. Reduza o número de linhas, colunas ou o tamanho de colunas grandes (cadeias de caracteres, matrizes, mapas, structs) para reduzir o uso de memória.

EXCESSIVE_QUEUE_TIME

A consulta esperou na fila do armazém .

Recomendação: Aumente o número máximo de clusters no warehouse para reduzir o tempo da fila.

IO_THROTTLING

Uma solicitação de armazenamento em nuvem foi limitada pelo provedor de nuvem.

Recomendação: Entre em contato com o administrador para solicitar maiores limites de solicitação de armazenamento do seu provedor de nuvem.

Acelerações aplicadas

Esses insights descrevem otimizações que o Azure Databricks já aplicou durante a execução da consulta. Eles aparecem na aba de insights de desempenho com o rótulo Acelerado e não exigem ação.

AUTO_LIQUID_CLUSTERING

Essa consulta apresenta menos dados porque suas tabelas utilizam Agrupamento Automático de Líquidos. O Azure Databricks agrupa continuamente cada tabela pelas chaves que aprende da sua carga de trabalho, então as varreduras pulam arquivos que não correspondem aos seus filtros. Não é necessário ajuste ou particionamento manual.

HISTORY_BASED_JOIN_STRATEGY

O Azure Databricks otimizou a junção dessa consulta usando medições de execuções anteriores de consultas semelhantes. Ele escolheu uma junção de broadcast em vez de empurrar dados pelo cluster, com base no histórico da sua carga de trabalho. Não é necessária alteração na consulta.

SHORT_QUERY_PRIORITIZATION

Mesmo com o cluster lotado, o Azure Databricks previu que essa consulta seria curta e a executou imediatamente por um caminho rápido, em vez de mantê-la na fila atrás de consultas mais pesadas. Isso mantém cargas de trabalho interativas responsivas sob carga.

Recursos adicionais

Para obter uma visão geral mais ampla das práticas recomendadas de desempenho, consulte o Guia Abrangente para Otimizar Cargas de Trabalho do Databricks, Spark e Delta Lake.