Low shuffle Merge on Databricks
Delta Lake met à jour une table en réécrivant des fichiers de données complets. Lorsqu'une commande MERGE met à jour ou supprime quelques lignes dans un fichier, elle doit également réécrire toutes les lignes non modifiées de ce fichier. Sans low shuffle merge, ces lignes non modifiées passent par les mêmes étapes de mélange que les lignes modifiées. Cela ralentit MERGE et brouille le layout des données existantes, de sorte que les queries ultérieures ralentissent également.
Low shuffle Merge est l’implémentation Databricks optimisée de MERGE. Elle traite les lignes non modifiées séparément des lignes modifiées, sans shuffles ni autres calculs coûteux. En conséquence, MERGE effectue beaucoup moins de shuffles de données et s’exécute plus rapidement.
La fusion à faible brassage est activée default. Vous n'avez donc pas besoin de modifier vos instructions MERGE pour en bénéficier. C’est surtout utile lorsqu’un MERGE met à jour un nombre relativement réduit de lignes dans une grande table.
Data layout après une Merge
La précédente implémentation de MERGE modifiait complètement le layout des données non modifiées, ce qui ralentissait les opérations ultérieures. Low shuffle Merge essaie de conserver le Layout existant des lignes non modifiées, y compris le Layout liquid clustering. Par conséquent, les performances se dégradent plus lentement après une ou plusieurs commandes MERGE, et vous devez exécuter OPTIMIZE moins souvent.
La Layout des lignes mises à jour ou nouvellement insérées peut ne pas être optimale. Vous devrez peut-être toujours exécuter OPTIMIZE sur des tables avec clustering liquide activé.
Pour les tables qui utilisent le Z-ordering, la fusion par Merge faible tente également de préserver le layout Z-order existant des lignes non modifiées. Vous devrez peut-être encore exécuter OPTIMIZE ZORDER BY après une opération MERGE. Databricks recommande d'utiliser le clustering liquide pour toutes les nouvelles tables.