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é triggery prořezávání souborů pro dotazy, které obsahují příkazy filtru nebo WHERE
klauzule. Výpočetní prostředky s podporou Photon je nutné použít k použití dynamického vyřazování souborů v MERGE
, UPDATE
a DELETE
příkazech. Dynamické vyřezávání souborů využívají pouze SELECT
příkazy, pokud se photon 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. Dopad dynamického vyřazení souborů na výkon často koreluje s clusteringem dat, proto zvažte použití řazení Z k maximalizaci výhody.
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 jetrue
): Hlavní flag, který směruje optimalizátor na přenášení filtrů dolů. Pokud je nastavená hodnotafalse
, dynamické vyřezávání souborů nebude účinné. -
spark.databricks.optimizer.deltaTableSizeThreshold
(výchozí hodnota je10,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říkazuDESCRIBE DETAIL table_name
a následným zobrazením sloupcesizeInBytes
. -
spark.databricks.optimizer.deltaTableFilesThreshold
(výchozí hodnota je10
): 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říkazuDESCRIBE DETAIL table_name
a následným zobrazením sloupcenumFiles
.