Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Consultas lentas e custos elevados de computação geralmente resultam de algumas causas raiz: ler mais dados do que uma consulta precisa, trocar dados entre nós, escolher um plano de consulta mau ou reescrever ficheiros que não mudaram. O Azure Databricks resolve automaticamente muitas destas causas em cargas de trabalho que vão desde o processamento ETL em grande escala até consultas interativas e ad hoc. Outras otimizações aplicam-se apenas quando as ativa ou as ajusta para uma carga de trabalho específica.
Esta página começa com recomendações para a maioria das cargas de trabalho, depois agrupa as otimizações consoante funcionam automaticamente ou exigem que as configure, e descreve o problema que cada uma resolve. A maioria das otimizações do Databricks Runtime requer o Delta Lake, o formato padrão para tabelas no Azure Databricks.
Comece com estas recomendações
Estas escolhas proporcionam os maiores ganhos de desempenho para a maioria das cargas de trabalho. Também ajudam muitas das otimizações automáticas nesta página a funcionar ao máximo.
-
Utilize o agrupamento líquido para a disposição das tabelas.O agrupamento líquido substitui o particionamento da tabela e
ZORDER. Organiza os dados pelas colunas onde filtras frequentemente, o que melhora o data skipping e a poda dinâmica de ficheiros. - Utilize tabelas geridas pelo Unity Catalog.A otimização preditiva mantém automaticamente as tabelas geridas. Consulte as tabelas geridas do Unity Catalog para Delta Lake e Apache Iceberg.
- Utilize a computação ativada pelo Photon. A E/S preditiva requer Photon, tal como a poda dinâmica de ficheiros nas instruções
MERGE,UPDATEeDELETE. Veja O que é Photon?. - Ativar deletion vectors. A I/O Preditiva utiliza vetores de deleção para evitar reescrever ficheiros inteiros durante atualizações, eliminações e fusões, e a concorrência ao nível das linhas requer esses vetores. Para tabelas Delta Lake, deve ativar explicitamente os vetores de deleção. Ver Vetores de eliminação em Databricks.
- Utilize o mais recente Databricks Runtime. As novas versões incluem as mais recentes melhorias de desempenho. Algumas otimizações requerem uma versão mínima do Databricks Runtime ou computação com Photon. Consulte cada página para os requisitos.
Otimizações automáticas
Estas otimizações estão ativadas por defeito. Não precisa de os ativar, mas alguns trazem mais benefícios quando as suas tabelas e a capacidade de computação cumprem certas condições, como usar o Photon ou manter as estatísticas das tabelas atualizadas.
- Cache de disco: Acelera consultas que leem repetidamente os mesmos ficheiros de dados remotos do Parquet e do Delta Lake. O Azure Databricks armazena em cache cópias dos ficheiros no armazenamento local dos nós de computação para que as leituras posteriores sejam efetuadas localmente. O Azure Databricks ativa-o automaticamente nos tipos de instância worker que o suportam.
-
Eliminação dinâmica de ficheiros: Ignora ficheiros que não podem conter linhas correspondentes em joins em tabelas Delta Lake.
MERGE,UPDATEeDELETEas declarações requerem computação com Photon ativado para poda dinâmica de ficheiros. -
Low shuffle merge: Acelera
MERGEas operações que atualizam ou eliminam algumas linhas em cada ficheiro. A fusão com baixa reorganização (shuffle) processa linhas não modificadas sem embaralhar e preserva o seu layout de dados existente. - Execução adaptativa de consultas: Re-otimiza os planos de consulta enquanto as consultas são executadas, com base no tamanho real dos dados. Isto corrige estratégias de junção lentas, demasiadas tarefas pequenas e tarefas enviesadas que resultam de estimativas imprecisas.
- E/S Preditiva: Acelera as varreduras de dados e reduz os dados reescritos durante atualizações, eliminações e fusões em computação com Photon.
- Otimizador baseado em custos: Utiliza estatísticas de tabelas e colunas para escolher planos de consulta eficientes, especialmente para consultas com múltiplas junções. O otimizador baseado em custos depende de estatísticas, por isso recolha-as e mantenha-as atualizadas.
-
Otimização preditiva: Executa
OPTIMIZE,VACUUMeANALYZEautomaticamente em tabelas geridas pelo Unity Catalog, pelo que não precisa de agendar a manutenção das tabelas. Também mantém atualizadas as estatísticas que o otimizador baseado em custos utiliza. Para verificar se está ativado para a sua conta, veja Verificar se a otimização preditiva está ativada.
Otimizações que configura
Estas otimizações exigem que as ative, ajuste ou altere a configuração da tabela. Use-os quando uma carga de trabalho precisar de comportamentos que os padrões não cobrem.
- Suporte ao arquivamento: Utilize quando as políticas do ciclo de vida na cloud transferem ficheiros de tabela mais antigos para níveis de armazenamento arquivístico para reduzir custos de armazenamento. O suporte para arquivamento diz ao Azure Databricks para ignorar ficheiros mais antigos do que um período especificado, para que a política de ciclo de vida não quebre consultas que apenas leem dados recentes. Esta funcionalidade está em Pré-visualização Pública.
- Range join: Usar quando as junções usam um ponto num intervalo ou uma condição de sobreposição de intervalos. O SQL do Databricks otimiza automaticamente as junções por intervalo. Noutras plataformas de computação, ajusta os range joins com join hints ou configuração da sessão.
- Níveis de isolamento e conflitos de escrita: Usar quando escritas concorrentes na mesma tabela entram em conflito, ou quando uma carga de trabalho necessita de garantias mais rigorosas do que o nível padrão de isolamento WriteSerializable. O isolamento serializável reduz o débito para escritas concorrentes. A concorrência ao nível das linhas resolve automaticamente muitos conflitos entre escritas concorrentes em tabelas que cumprem os seus requisitos.
-
Índices de pesquisa em texto completo: Usar quando as consultas procuram nas colunas de texto substrings ou palavras com as funções
searchouisearch. O índice ignora ficheiros que não podem conter linhas correspondentes. Este recurso está em versão Beta.
Nota
Os índices de filtro de Bloom são uma funcionalidade preterida para ignorar dados. Adicionam sobrecarga de escrita e são difíceis de ajustar. Se as suas tabelas os tiverem, consulte os índices de filtro de Bloom (obsoletos) para os substituir e depois removê-los.
Outras funcionalidades de desempenho
- As funções de ordem superior têm desempenho otimizado incorporado para muitas operações que não têm operadores Spark comuns. Funções de ordem superior têm um desempenho melhor do que funções definidas pelo utilizador.
- O Azure Databricks tem operadores incorporados e sintaxe especial para trabalhar com tipos de dados complexos, incluindo arrays, structs e strings JSON.
- O Spark SQL processa as strings JSON sem as analisar primeiro.
- Para controlar o tamanho dos ficheiros de dados produzidos pelas operações de escrita, veja Controlar o tamanho do ficheiro de dados.
- Para orientações sobre design e manutenção de tabelas, consulte Melhores práticas: Delta Lake.
Diagnosticar cargas de trabalho lentas ou dispendiosas
Se uma carga de trabalho for mais lenta ou mais cara do que o esperado e não souberes porquê, usa a interface do Spark para encontrar o gargalo antes de mudares de configuração. Veja Diagnosticar problemas de custo e desempenho usando a interface do Spark.