Dynamische Dateibereinigung
Die dynamische Dateibereinigung (Dynamic File Pruning, DFP) kann die Leistung vieler Abfragen bei Delta-Tabellen erheblich verbessern. Dynamische Dateireduzierung triggert Abfragen, die Filteranweisungen oder WHERE
-Klauseln enthalten. Sie müssen eine Photon-fähige Compute-Instanz verwenden, um die dynamische Dateibereinigung in MERGE
-, UPDATE
- und DELETE
-Anweisungen zu verwenden. Nur SELECT
-Anweisungen nutzen die dynamische Dateibereinigung, wenn Photon nicht verwendet wird.
DFP ist besonders effizient für nicht partitionierte Tabellen oder für Joins in nicht partitionierten Spalten. Die Auswirkungen von DFP auf die Leistung hängen häufig mit dem Clustering von Daten zusammen. Ziehen Sie daher die Verwendung der Z-Ordnung in Betracht, um den Vorteil von DFP zu maximieren.
Hintergrundinformationen zu DFP und entsprechende Anwendungsfälle finden Sie unter Schnellere SQL-Abfragen in Delta Lake durch dynamische Dateibereinigung.
Konfiguration
DFP wird durch die folgenden Apache Spark-Konfigurationsoptionen gesteuert:
spark.databricks.optimizer.dynamicFilePruning
(Standardeinstellung:true
): Das Hauptflag, das den Optimierer anweist, DFP-Filter nach unten zu pushen. Wenn dieser Wert auffalse
festgelegt ist, wird dynamische Dateibereinigung nicht wirksam.spark.databricks.optimizer.deltaTableSizeThreshold
(Standardeinstellung:10,000,000,000 bytes (10 GB)
): Stellt die Mindestgröße (in Bytes) der Delta-Tabelle auf der Testseite des Joins dar, die zum Auslösen von DFP erforderlich ist. Wenn die Testseite nicht sehr groß ist, lohnt es sich nicht, die Filter nach unten zu pushen. Stattdessen kann einfach die gesamte Tabelle überprüft werden. Sie können die Größe einer Delta-Tabelle finden, indem Sie den BefehlDESCRIBE DETAIL table_name
ausführen und dann die SpaltesizeInBytes
betrachten.spark.databricks.optimizer.deltaTableFilesThreshold
(Standardeinstellung:10
): Stellt die Anzahl an Dateien der Delta-Tabelle auf der Testseite des Joins dar, die zum Auslösen der dynamischen Dateibereinigung erforderlich ist. Wenn die Tabelle auf der Testseite weniger Dateien enthält als vom Schwellenwert vorgegeben, wird keine dynamische Dateibereinigung ausgelöst. Wenn eine Tabelle nur wenige Dateien enthält, lohnt es sich nicht, die dynamische Dateibereinigung zu aktivieren. Sie können die Größe einer Delta-Tabelle finden, indem Sie den BefehlDESCRIBE DETAIL table_name
ausführen und dann die SpaltenumFiles
betrachten.