Слияние с малым перемешиванием в Azure Databricks
Примечание.
В Databricks Runtime 10.4 lTS и более поздних версиях и общедоступной предварительной версии в Databricks Runtime 9.1 LTS доступно низкое число слияний. Databricks рекомендует пользователям предварительной версии перенестися в Databricks Runtime 10.4 LTS или более поздней версии.
Команда MERGE используется для выполнения одновременных операций обновления, вставки и удаления из таблицы Delta Lake. Azure Databricks имеет оптимизированную реализацию MERGE
, которая значительно повышает производительность для распространенных рабочих нагрузок за счет уменьшения количества операций перемешивания.
Слияние с малым перемешиванием в Databricks отличается более высокой производительностью за счет отдельной обработки неизмененных строк в более простом режиме вместо обработки совокупно с измененными строками. В результате объем перемешанных данных значительно сокращается, что приводит к повышению производительности. Слияние с малым перемешиванием устраняет необходимость повторно выполнять команду OPTIMIZE ZORDER BY после операции MERGE
.
Оптимизированная производительность
Многие рабочие нагрузки MERGE
обновляют только относительно небольшое количество строк в таблице. Однако разностные таблицы можно обновлять только отдельно для каждого файла. Если команде MERGE
необходимо обновить или удалить небольшое количество строк, хранящихся в определенном файле, то она также должна обрабатывать и перезаписывать все оставшиеся строки, хранящиеся в том же файле, даже если эти строки не изменялись. При слиянии с малым перемешиванием выполняется оптимизация обработки неизмененных строк. Прежде они обрабатывались так же, как и измененные строки, передавались через несколько этапов случайного изменения и ресурсоемкие вычисления. При слиянии с малым перемешиванием неизмененные строки обрабатываются без перемешивания, затратной обработки или других дополнительных передач.
Оптимизированный макет данных
Помимо ускорения работы, при слиянии с малым перемешиванием также используются преимущества последующих операций. Предыдущая реализация MERGE
привела к полному изменению макета неизмененных данных, что привело к снижению производительности при последующих операциях. При слиянии с малым перемешиванием выполняется попытка сохранения существующего макета данных неизмененных записей, включая оптимизацию Z-порядка на основе максимальных усилий. Таким образом, при слиянии с малым перемешиванием производительность операций в разностной таблице будет снижаться медленнее после выполнения одной или нескольких команд MERGE
.
Примечание.
При слиянии с малым перемешиванием выполняется попытка сохранения макета данных для существующих данных, которые не изменяются. Макет обновленных или вновь вставляемых данных может быть неоптимальным, поэтому по-прежнему потребуется запуск команд OPTIMIZE
или OPTIMIZE ZORDER BY.
Availability
Слияние с малым перемешиванием включено по умолчанию в Databricks Runtime 10.4 и более поздних версий. В более ранних поддерживаемых версиях его можно включить, задав для конфигурации spark.databricks.delta.merge.enableLowShuffle
значение true
. Этот флаг не действует в Databricks Runtime 10.4 и более поздних версий.