Share via


Dynamisk filrensning

Dynamisk filrensning kan avsevärt förbättra prestandan för många frågor i Delta Lake-tabeller. Utlösare för dynamisk filrensning för frågor som innehåller filterinstruktioner eller WHERE -satser. Du måste använda Photon-aktiverad beräkning för att använda dynamisk filrensning i MERGE, UPDATEoch DELETE -instruktioner. Endast SELECT uttryck använder dynamisk filrensning när Photon inte används.

Dynamisk filrensning är särskilt effektivt för icke-partitionerade tabeller eller för kopplingar i icke-partitionerade kolumner. Prestandapåverkan av dynamisk filrensning är ofta korrelerad med klustring av data, så överväg att använda Z-Ordering för att maximera fördelen.

Bakgrunds- och användningsfall för dynamisk filrensning finns i Snabbare SQL-frågor på Delta Lake med dynamisk filrensning.

Konfiguration

Dynamisk filrensning styrs av följande Konfigurationsalternativ för Apache Spark:

  • spark.databricks.optimizer.dynamicFilePruning (standard är true): Huvudflaggan som instruerar optimeraren att trycka ned filter. När värdet är inställt på falsegäller inte dynamisk filrensning.
  • spark.databricks.optimizer.deltaTableSizeThreshold (standard är 10,000,000,000 bytes (10 GB)): Representerar den minsta storleken (i byte) för Delta-tabellen på avsökningssidan av kopplingen som krävs för att utlösa dynamisk filrensning. Om avsökningssidan inte är så stor är det förmodligen inte värt att trycka ned filtren och vi kan helt enkelt genomsöka hela tabellen. Du hittar storleken på en Delta-tabell genom att DESCRIBE DETAIL table_name köra kommandot och sedan titta på sizeInBytes kolumnen.
  • spark.databricks.optimizer.deltaTableFilesThreshold (standard är 10): Representerar antalet filer i Delta-tabellen på avsökningssidan av kopplingen som krävs för att utlösa dynamisk filrensning. När tabellen på avsökningssidan innehåller färre filer än tröskelvärdet utlöses inte dynamisk filrensning. Om en tabell bara har ett fåtal filer är det förmodligen inte värt att aktivera dynamisk filrensning. Du hittar storleken på en Delta-tabell genom att DESCRIBE DETAIL table_name köra kommandot och sedan titta på numFiles kolumnen.