Mesclagem de embaralhamento baixo de ordem aleatória no Azure Databricks

O Delta Lake atualiza uma tabela reescrevendo arquivos de dados completos. Quando um comando MERGE atualiza ou exclui algumas linhas em um arquivo, ele também deve reescrever todas as linhas não modificadas desse arquivo. Sem low shuffle merge, essas linhas não modificadas passam pelos mesmos estágios de embaralhamento que as linhas modificadas. Isso torna MERGE mais lento e embaralha o layout dos dados existente, então consultas posteriores também ficam mais lentas.

Low shuffle merge é a implementação otimizada do Azure Databricks de MERGE. Ele processa linhas não modificadas separadamente das linhas modificadas, sem embaralhamento ou outros cálculos caros. Como resultado, MERGE embaralha muito menos dados e roda mais rápido.

A mesclagem low shuffle está ativada por padrão, então você não precisa alterar suas instruções MERGE para se beneficiar disso. Ajuda muito quando MERGE atualiza um número relativamente pequeno de linhas em uma tabela grande.

Layout dos dados após uma fusão

A implementação anterior MERGE mudou completamente o layout dos dados não modificados, o que desacelerou as operações posteriores. A fusão de baixo embaralhamento tenta preservar o layout existente das linhas não modificadas, incluindo o layout liquid clustering. Como resultado, o desempenho se degrada mais lentamente após um ou mais MERGE comandos, e você precisa executar OPTIMIZE com menos frequência.

O layout das linhas atualizadas ou recém-inseridas pode não ser ideal. Você ainda pode precisar rodar OPTIMIZE em tabelas com o cluster líquido ativado.

Para tabelas que usam ordenação Z, o low shuffle merge também tenta preservar o layout existente da ordem Z das linhas não modificadas. Você ainda pode precisar rodar OPTIMIZE o ZORDER BY após a MERGE operação. O Databricks recomenda o uso de clustering líquido para todas as novas tabelas.