Élagage de fichiers dynamiques
L'élagage dynamique de fichiers peut améliorer considérablement les performances de nombreuses requêtes sur les tables Delta Lake. Déclencheurs d'élagage dynamique des fichiers pour les requêtes qui contiennent des instructions de filtre ou des clauses WHERE
. Il est impératif d'utiliser un calcul activé par Photon pour utiliser l'élagage dynamique des fichiers dans les instructions MERGE
, UPDATE
et DELETE
. Seules des instructions SELECT
tirent parti du nettoyage dynamique de fichiers lorsque Photon n’est pas utilisé.
L'élagage dynamique des fichiers est particulièrement efficace pour les tables non partitionnées ou pour les jointures sur des colonnes non partitionnées. L’impact sur les performances de l’élagage de fichiers dynamiques est souvent corrélé au clustering de données. Envisagez donc d’utiliser Z-Ordering pour optimiser l’avantage.
Pour plus d’informations sur l’arrière-plan et les cas d'usage de l’élagage des fichiers dynamiques, consultez Accélérer les requêtes SQL sur Delta Lake avec l’élagage de fichiers dynamiques.
Configuration
L'élagage dynamique des fichiers est contrôlé par les options de configuration Apache Spark suivantes :
spark.databricks.optimizer.dynamicFilePruning
(la valeur par défaut esttrue
) : indicateur principal qui dirige l’optimiseur pour pousser les filtres vers le bas. Lorsque la valeur est définie surfalse
, l’exécution de fichiers dynamiques n’est pas active.spark.databricks.optimizer.deltaTableSizeThreshold
(la valeur par défaut est10,000,000,000 bytes (10 GB)
) : représente la taille minimale (en octets) de la table Delta côté sonde de la jointure requise pour déclencher l’élagage de fichiers dynamiques. Si le côté sonde d’intégrité n’est pas très important, il n’est probablement pas judicieux d’envoyer (push) les filtres, et nous pouvons simplement analyser la table entière. Vous pouvez trouver la taille d’une table Delta en exécutant la commandeDESCRIBE DETAIL table_name
, puis en examinant la colonnesizeInBytes
.spark.databricks.optimizer.deltaTableFilesThreshold
(la valeur par défaut est10
) : représente le nombre de fichiers de la table Delta du côté sonde de la jointure requis pour déclencher l'élagage dynamique des fichiers. Lorsque la table latérale de la sonde contient moins de fichiers que la valeur de seuil, l'élagage dynamique des fichiers n'est pas activé. Si une table ne contient que quelques fichiers, il n’est probablement pas utile d’activer l'élagage dynamique des fichiers. Vous pouvez trouver la taille d’une table Delta en exécutant la commandeDESCRIBE DETAIL table_name
, puis en examinant la colonnenumFiles
.