通过


动态文件修剪

动态文件修剪可以显著提高 Delta Lake 表上许多查询的性能。 动态文件修剪触发器会根据查询优化器的决策启动,并适用于含有筛选语句或WHERE子句的查询。 必须使用已启用 Photon 的计算,以保证在MERGEUPDATEDELETE语句中使用动态文件修剪。 仅当不使用 Photon 时,只有 SELECT 语句保证使用动态文件修剪。

动态文件修剪对于非分区表或非分区列上的联接特别有效。 动态文件修剪的性能效果通常与数据聚类分析相关,因此请考虑使用液体聚类分析最大程度地提高效益。 请参阅对表使用 liquid 聚类分析

有关动态文件修剪的背景和用例,请参阅 使用动态文件修剪在 Delta Lake 上实现更快的 SQL 查询

配置

动态文件修剪由以下 Apache Spark 配置选项控制:

  • spark.databricks.optimizer.dynamicFilePruning(默认值为 true):指示优化器向下推送筛选器的主标志。 设置为 false时,动态文件修剪不会生效。
  • spark.databricks.optimizer.deltaTableSizeThreshold(默认值为 10,000,000,000 bytes (10 GB)):表示连接探测侧触发动态文件修剪所需的 Delta 表的最小大小(以字节为单位)。 如果探测侧不是很大,那么向下推筛选器可能不值得,我们可以简单地扫描整个表。 可以通过运行 DESCRIBE DETAIL table_name 命令并查看 sizeInBytes 列来查找 Delta 表的大小。
  • spark.databricks.optimizer.deltaTableFilesThreshold(默认值为 10):表示触发动态文件修剪所需的联接探测端 Delta 表的文件数。 当探测端表包含的文件少于阈值时,不会触发动态文件修剪。 如果表只有几个文件,则启用动态文件修剪可能并不值得。 可以通过运行 DESCRIBE DETAIL table_name 命令并查看 numFiles 列来查找 Delta 表的大小。