Partager via


Fusion faible et aléatoire sur Azure Databricks

Remarque

La fusion aléatoire faible est en disponibilité générale (GA) dans Databricks Runtime 10.4 LTS et versions ultérieures et en préversion publique dans Databricks Runtime 9.1 LTS. Databricks recommande de migrer les clients en préversion vers Databricks Runtime 10.4 LTS ou version ultérieure.

La commande MERGE est utilisée pour effectuer des mises à jour, des insertions et des suppressions simultanées à partir d’une table Delta Lake. Azure Databricks dispose d’une implémentation optimisée de MERGE qui améliore considérablement les performances pour les charges de travail courantes en réduisant le nombre d’opérations aléatoires.

La fusion faible et aléatoire de Databricks offre de meilleures performances en traitant les lignes non modifiées dans un mode de traitement distinct et plus rationalisé, au lieu de les traiter de concert avec les lignes modifiées. Ainsi, la quantité de données aléatoires est considérablement réduite, ce qui entraîne une amélioration des performances. La fusion faible et aléatoire réduit aussi la nécessité pour les utilisateurs de réexécuter la commande OPTIMIZE ZORDER BY après avoir effectué une opération MERGE.

Optimisation des performances

De nombreuses charges de travail MERGE ne mettent à jour qu’un nombre relativement faible de lignes dans une table. Toutefois, les tables Delta ne peuvent être mises à jour que sur la base de chaque fichier. Lorsque la commande MERGE doit mettre à jour ou supprimer un petit nombre de lignes stockées dans un fichier particulier, elle doit également traiter et réécrire toutes les lignes restantes qui sont stockées dans le même fichier, même si ces lignes ne sont pas modifiées. La fusion faible et aléatoire optimise le traitement des lignes non modifiées. Auparavant, elles étaient traitées de la même façon que les lignes modifiées, en les transmettant à travers plusieurs étapes aléatoires et des calculs coûteux. Dans une fusion faible et aléatoire, les lignes non modifiées sont traitées à la place sans aucune lecture aléatoire, traitement onéreux ou autre surcharge ajoutée.

Disposition des données optimisées

En plus d’être plus rapides à exécuter, la fusion faible et aléatoire est également bénéfique pour les opérations suivantes. L’implémentation MERGE antérieure a entraîné la modification complète de la disposition des données non modifiées, ce qui réduit les performances des opérations suivantes. La fusion faible et aléatoire essaie de conserver la disposition des données existantes des enregistrements non modifiés, y compris l’optimisation de l'ordre de plan de manière optimale. Par conséquent, avec une fusion faible et aléatoire, les performances des opérations sur une table Delta se détérioreront plus lentement après l’exécution d’une ou plusieurs commandes MERGE.

Notes

Une fusion faible et aléatoire essaie de conserver la disposition des données sur les données existantes qui ne sont pas modifiées. La disposition des données des données mises à jour ou récemment insérées peut ne pas être optimale. il peut donc être nécessaire d’exécuter les commandes OPTIMIZE et OPTIMIZE ZORDER BY.

Disponibilité

La fonctionnalité Fusion faible et aléatoire est activée par défaut dans Databricks Runtime 10.4 et versions ultérieures. Dans les versions antérieures de Databricks Runtime prises en charge, elle peut être activée en définissant la configuration spark.databricks.delta.merge.enableLowShuffle sur true. Cet indicateur n’a aucun effet dans Databricks Runtime 10.4 et versions ultérieures.