Dela via


Dynamisk filrensning

Dynamisk filrensning kan avsevärt förbättra prestandan för många frågor i Delta Lake-tabeller. Dynamisk filrensning utlöses 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-instruktioner 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å falsetillämpas inte dynamisk filrensning.
  • spark.databricks.optimizer.deltaTableSizeThreshold (standard är 10,000,000,000 bytes (10 GB)): Representerar den minsta storleken (i byte) av Delta tabellen på probesidan av joinen som krävs för att utlösa dynamisk filrensning. Om probesidan inte är särskilt stor är det förmodligen inte värt att sänka filtren, och vi kan helt enkelt bara genomsöka hela tabellen. Du hittar storleken på en Delta-tabell genom att köra kommandot DESCRIBE DETAIL table_name och sedan titta på kolumnen sizeInBytes.
  • 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 köra kommandot DESCRIBE DETAIL table_name och sedan titta på kolumnen numFiles.