Dynamische Dateibereinigung

Die dynamische Dateibereinigung (Dynamic File Pruning, DFP) kann die Leistung vieler Abfragen bei Delta-Tabellen erheblich verbessern. 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.

Wichtig

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.

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 auf false 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 Befehl DESCRIBE DETAIL table_name ausführen und dann die Spalte sizeInBytes 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 Befehl DESCRIBE DETAIL table_name ausführen und dann die Spalte numFiles betrachten.