Dynamické vyřezávání souborů

Dynamické vyřezávání souborů může výrazně zlepšit výkon mnoha dotazů v tabulkách Delta Lake. Dynamické vyřazování souborů se spouští na základě rozhodnutí optimalizátoru dotazů a pro dotazy, které obsahují příkazy filtru nebo WHERE klauzule. K zajištění dynamického vyřazování souborů v MERGEUPDATEa DELETE příkazech musíte použít výpočetní prostředky s podporou Photon. Pouze SELECT příkazy zaručují použití dynamického vyřezávání souborů, pokud photon se nepoužívá.

Dynamické vyřazování souborů je zvlášť efektivní pro tabulky, které nejsou rozdělené do oddílů, nebo pro spojení v nedělených sloupcích. Účinek dynamického vyřazení souborů často koreluje s clusteringem dat, proto zvažte použití liquid clusteringu k maximalizaci výhod. Viz Použití metody 'liquid clustering' pro tabulky.

Pozadí a případy použití dynamického ořezávání souborů najdete v tématu Rychlejší dotazy SQL na Delta Lake s dynamickým ořezáváním souborů.

Konfigurace

Dynamické vyřezávání souborů se řídí následujícími možnostmi konfigurace Apache Sparku:

  • spark.databricks.optimizer.dynamicFilePruning (výchozí hodnota je true): Hlavní flag, který směruje optimalizátor na přenášení filtrů dolů. Pokud je nastavená hodnota false, dynamické vyřezávání souborů nebude účinné.
  • spark.databricks.optimizer.deltaTableSizeThreshold (výchozí hodnota je 10,000,000,000 bytes (10 GB)): Představuje minimální velikost (v bajtech) tabulky Delta na straně sondy spojení potřebné k aktivaci dynamického vyřezávání souborů. Pokud není strana sondy příliš velká, pravděpodobně není vhodné posunout filtry dolů a můžeme jednoduše naskenovat celou tabulku. Velikost tabulky Delta najdete spuštěním příkazu DESCRIBE DETAIL table_name a následným zobrazením sloupce sizeInBytes.
  • spark.databricks.optimizer.deltaTableFilesThreshold (výchozí hodnota je 10): Představuje počet souborů tabulky Delta na straně sondy spojení potřebné k aktivaci dynamického vyřezávání souborů. Pokud tabulka na straně sondy obsahuje méně souborů než prahová hodnota, dynamické vyřezávání souborů se neaktivuje. Pokud tabulka obsahuje jenom několik souborů, pravděpodobně není vhodné povolit dynamické vyřezávání souborů. Velikost tabulky Delta najdete spuštěním příkazu DESCRIBE DETAIL table_name a následným zobrazením sloupce numFiles.