Что такое векторы удаления?
Векторы удаления — это функция оптимизации хранилища, которая может быть включена в таблицах Delta Lake. По умолчанию при удалении одной строки в файле данных необходимо перезаписать весь файл Parquet, содержащий запись. Если векторы удаления включены для таблицы, DELETE
и UPDATE
операций, используйте MERGE
векторы удаления, чтобы пометить существующие строки как удаленные или измененные без перезаписи файла Parquet. Последующие операции чтения в таблице разрешают текущее состояние таблицы, применяя удаления, отмеченные векторами удаления, к последней версии таблицы.
Databricks рекомендует использовать Databricks Runtime 14.3 LTS и более поздних версий для записи таблиц с векторами удаления для использования всех оптимизаций. Таблицы можно считывать с векторами удаления, включенными в Databricks Runtime 12.2 LTS и выше.
В Databricks Runtime 14.2 и более поздних версиях таблицы с векторами удаления поддерживают параллелизм на уровне строк. См. статью "Конфликты записи с параллелизмом на уровне строк".
Примечание.
Фотон использует векторы удаления для прогнозных обновлений ввода-вывода, ускорения DELETE
и MERGE
UPDATE
операций. Все клиенты, поддерживающие чтение векторов удаления, могут считывать обновления, которые создавали векторы удаления независимо от того, были ли эти обновления созданы прогнозным вводом-выводом. См. статью "Использование прогнозного ввода-вывода" для ускорения обновлений.
Включение векторов удаления
Векторы удаления включены по умолчанию при создании новой таблицы с помощью хранилища SQL или Databricks Runtime 14.1 или более поздней версии.
Внимание
Параметр администратора рабочей области определяет, включены ли векторы удаления для новых таблиц Delta. См. векторы автоматического включения удаления.
Вы можете включить поддержку векторов удаления в таблице Delta, задав свойство таблицы Delta Lake. Векторы удаления можно включить во время создания таблицы или изменить существующую таблицу, как показано в следующих примерах:
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Предупреждение
При включении векторов удаления протокол таблицы обновляется. После обновления таблица не будет читаема клиентами Delta Lake, которые не поддерживают векторы удаления. Узнайте, как Azure Databricks управляет совместимостью функций Delta Lake?.
В Databricks Runtime 14.1 и более поздних версиях можно удалить функцию таблицы векторов удаления, чтобы обеспечить совместимость с другими клиентами Delta. См. сведения о функциях таблицы Drop Delta.
Применение изменений к файлам данных Parquet
Векторы удаления указывают на изменения строк в виде обратимого удаления, которые логически изменяют существующие файлы данных Parquet в таблице Delta Lake. Эти изменения применяются физически при перезаписи файлов данных, которые активируются одним из следующих событий:
- Команда
OPTIMIZE
выполняется в таблице. - Автоматическое сжатие активирует перезапись файла данных с вектором удаления.
REORG TABLE ... APPLY (PURGE)
выполняется в таблице.
События, связанные с сжатием файлов, не имеют строгих гарантий для разрешения изменений, записанных в векторах удаления, и некоторые изменения, записанные в векторах удаления, могут не применяться, если целевые файлы данных не будут кандидатами на сжатие файлов. REORG TABLE ... APPLY (PURGE)
перезаписывает все файлы данных, содержащие записи с изменениями, записанными с помощью векторов удаления. См. таблицу REORG.
Примечание.
Измененные данные могут по-прежнему существовать в старых файлах. Для физического удаления старых файлов можно выполнить инструкцию VACUUM. REORG TABLE ... APPLY (PURGE)
создает новую версию таблицы во время ее завершения, которая является меткой времени, которую необходимо учитывать для порогового значения хранения для операции, чтобы VACUUM
полностью удалить удаленные файлы. См. раздел "Удаление неиспользуемых файлов данных с помощью вакуума".
Совместимость с клиентами Delta
Azure Databricks использует векторы удаления для прогнозирования операций ввода-вывода для обновлений вычислительных ресурсов с поддержкой Photon. См. статью "Использование прогнозного ввода-вывода" для ускорения обновлений.
Поддержка использования векторов удаления для операций чтения и записи зависит от клиента.
В следующей таблице указаны необходимые версии клиента для чтения и записи разностных таблиц с включенными векторами удаления и указывает, какие операции записи используют векторы удаления:
Клиент | Запись векторов удаления | Чтение векторов удаления |
---|---|---|
Databricks Runtime с photon | Поддерживает MERGE и UPDATE DELETE использует Databricks Runtime 12.2 LTS и более поздних версий. |
Требуется Databricks Runtime 12.2 LTS или более поздней версии. |
Среда выполнения Databricks без фотона | Поддерживает DELETE использование Databricks Runtime 12.2 LTS и более поздних версий. Поддерживает UPDATE использование Databricks Runtime 14.1 и более поздних версий. Поддерживает MERGE использование Databricks Runtime 14.3 LTS и более поздних версий. |
Требуется Databricks Runtime 12.2 LTS или более поздней версии. |
OSS Apache Spark с OSS Delta Lake | Поддерживает DELETE использование OSS Delta 2.4.0 и более поздних версий. Поддерживает UPDATE использование OSS Delta 3.0.0 и более поздних версий. |
Требуется OSS Delta 2.3.0 или более поздней версии. |
Получатели разностного общего доступа | Записи не поддерживаются в таблицах Delta Sharing | Databricks: требуется DBR 14.1 или более поздней версии. Apache Spark с открытым кодом: требуется delta-sharing-spark 3.1 или более поздней версии. |
Примечание.
Сведения о поддержке других клиентов Delta см . в документации по интеграции OSS Delta Lake.
Ограничения
- UniForm не поддерживает векторы удаления.
- Вы можете включить векторы удаления для материализованных представлений, но чтобы отключить векторы удаления для материализованного представления, необходимо удалить материализованное представление и повторно создать его.
- Невозможно создать файл манифеста для таблицы с векторами удаления. Чтобы создать манифест, запустите
REORG TABLE ... APPLY (PURGE)
и убедитесь, что одновременные операции записи не выполняются. - Невозможно добавочно создавать файлы манифеста для таблицы с включенными векторами удаления.