Поделиться через


Уровни изоляции и конфликты записи

На этой странице описаны уровни изоляции и поведение конфликтов при записи для таблиц Delta Lake в Azure Databricks.

Delta Lake обеспечивает гарантии транзакций ACID между чтением и записью:

  • Писатели: несколько писателей в нескольких кластерах могут одновременно изменять раздел таблицы. Писатели видят согласованное моментальное отображение таблицы, и запись данных осуществляется в последовательном порядке.
  • Читатели: читатели продолжают видеть согласованное представление снимка таблицы, с которым началась работа Azure Databricks, даже при изменении таблицы в течение выполнения задания.

См. Что такое гарантии ACID в Azure Databricks?.

Замечание

Azure Databricks использует Delta Lake для всех таблиц по умолчанию.

Темы изоляции

Тема Описание
Уровни изоляции (WriteSerializable и Serializable) Как два уровня изоляции влияют на одновременные операции и как их настроить.
Параллелизм на уровне строк Как обнаружение конфликтов на уровне строк уменьшает конфликты записи для параллельных операций с теми же файлами данных.

Сведения об изоляции транзакций, поведении моментальных снимков и обработке конфликтов см. раздел Изоляция транзакций.

Конфликты изменений метаданных

Изменения метаданных вызывают сбой всех одновременных операций записи. Эти операции включают изменения в протокол таблицы, свойства таблицы или схему данных.

Потоковое чтение завершается сбоем при обнаружении коммита, который изменяет метаданные таблицы. Если вы хотите продолжить поток, необходимо перезапустить его. Рекомендуемые методы см. в разделе "Производственные соображения для структурированной потоковой передачи".

Ниже приведены примеры запросов, которые изменяют метаданные:

-- Set a table property
ALTER TABLE table_name SET TBLPROPERTIES ('delta.isolationLevel' = 'Serializable')

-- Enable a feature using a table property and update the table protocol
ALTER TABLE table_name SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

-- Drop a table feature
ALTER TABLE table_name DROP FEATURE deletionVectors;

-- Upgrade to UniForm
REORG TABLE table_name APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));

-- Update the table schema
ALTER TABLE table_name ADD COLUMNS (col_name STRING);

Дальнейшие действия