Mesclagem aleatória baixa no Databricks

Observação

merge de baixo embaralhamento está geralmente disponível (GA) no Databricks Runtime 10.3 e acima e na Visualização Pública no Databricks Runtime 9.1 LTS. Recomendamos que os clientes de pré-visualização migrem para o Databricks Runtime 10.3 ou acima.

O comando MERGE é usado para executar atualizações, inserções e exclusões simultâneas de uma tabela Delta Lake. Databricks tem uma implementação otimizada de MERGE que melhora o desempenho substancialmente para cargas de trabalho comuns, reduzindo o número de operações aleatórias.

merge de embaralhamento baixo do Databricks oferece melhor desempenho processando linhas não modificadas em um modo de processamento separado e mais simplificado, em vez de processá-las junto com as linhas modificadas. Como resultado, a quantidade de dados embaralhados é reduzida significativamente, levando a um melhor desempenho. merge aleatória baixa também reduz a necessidade de os usuários executarem novamente o comando OPTIMIZE ZORDER BY depois de realizar uma operação MERGE.

Desempenho otimizado

Muitas cargas de trabalho MERGE atualizam apenas um número relativamente pequeno de linhas em uma tabela. No entanto, as tabelas Delta só podem ser atualizadas por arquivo. Quando o comando MERGE precisa atualizar ou excluir um pequeno número de linhas armazenadas em um arquivo específico, ele também deve processar e reescrever todas as linhas restantes armazenadas no mesmo arquivo, mesmo que essas linhas não sejam modificadas. merge aleatória baixa otimiza o processamento de linhas não modificadas. Anteriormente, eles eram processados da mesma forma que as linhas modificadas, passando por vários estágios de embaralhamento e cálculos caros. Na merge aleatória baixa, as linhas não modificadas são processadas sem nenhum embaralhamento, processamento caro ou outra sobrecarga adicional.

Disposição de dados otimizada

Além de ser mais rápido na execução, o baixo shuffle merge também beneficia as operações subsequentes. A implementação MERGE anterior fez com que a provisão de dados não modificados fosse totalmente alterada, resultando em desempenho inferior nas operações subsequentes. merge aleatória baixa tenta preservar a disposição de dados existente dos registros não modificados, incluindo otimização de Z-order em uma base de melhor esforço. Portanto, com baixo shuffle merge, o desempenho das operações em uma tabela Delta será degradado mais lentamente após a execução de um ou mais comandos MERGE.

Observação

merge aleatória baixa tenta preservar a disposição de dados nos dados existentes que não são modificados. A disposição de dados atualizados ou inseridos recentemente pode não ser ideal, portanto, ainda pode ser necessário executar os comandos OPTIMIZE ou OPTIMIZE ZORDER BY .

Disponibilidade

merge aleatória baixa é habilitada por default no Databricks Runtime 10.4e acima. Em versões anteriores do Databricks Runtime com suporte, ele pode ser ativado definindo a configuração spark.databricks.delta.merge.enableLowShuffle como true. Este sinalizador não tem efeito no Databricks Runtime 10.4e acima.