Динамическое удаление файлов
Динамическое удаление файлов может значительно повысить производительность многих запросов в таблицах Delta Lake. Динамическая обрезка файлов запускается для запросов, содержащих фильтры или предложения WHERE
. Для использования динамической очистки файлов в MERGE
, UPDATE
и операторах DELETE
необходимо использовать вычислительные ресурсы с поддержкой Photon. Только операторы SELECT
используют динамическое удаление файлов в случае, если Фотон не используется.
Динамическое удаление файлов особенно эффективно для несекционированных таблиц или для соединений с несекционированными столбцами. Влияние динамической очистки файлов часто коррелирует с кластеризированием данных, поэтому рекомендуется использовать Z-Ordering, чтобы максимально повысить преимущество.
Для ознакомления с фоновыми сведениями и вариантами использования динамической очистки файлов см. более быстрые SQL-запросы в Delta Lake с динамической очисткой файлов.
Конфигурация
Динамическая очистка файлов управляется следующими параметрами конфигурации Apache Spark:
-
spark.databricks.optimizer.dynamicFilePruning
(по умолчанию —true
): основной флаг, который направляет оптимизатор на применение фильтров. Если задано значениеfalse
, динамическое удаление файлов не будет действовать. -
spark.databricks.optimizer.deltaTableSizeThreshold
(значение по умолчанию —10,000,000,000 bytes (10 GB)
): представляет минимальный размер таблицы Delta (в байтах) на стороне пробы соединения, необходимой для активации динамической очистки файлов. Если размер пробы не очень большой, вероятно, не стоит снижать фильтры, и мы можем просто просканировать всю таблицу. Размер таблицы Delta можно найти, выполнив командуDESCRIBE DETAIL table_name
, а затем просмотрев столбецsizeInBytes
. -
spark.databricks.optimizer.deltaTableFilesThreshold
(значение по умолчанию —10
): представляет количество файлов таблицы Delta на стороне зонда соединения, необходимого для активации динамической очистки файлов. Если боковая таблица пробы содержит меньше файлов, чем пороговое значение, динамическая обрезка файлов не запускается. Если таблица содержит только несколько файлов, возможно, не стоит включить динамическое удаление файлов. Размер таблицы Delta можно найти, выполнив командуDESCRIBE DETAIL table_name
, а затем просмотрев столбецnumFiles
.