Níveis de isolamento e conflitos de gravação

Níveis de isolamento e comportamento de conflito de escrita determinam o que acontece quando operações concorrentes leem e escrevem a mesma tabela Delta Lake no Azure Databricks.

Quando vários jobs ou usuários escrevem na mesma tabela ao mesmo tempo, algumas dessas gravações podem falhar com uma exceção de conflito. Use as páginas desta seção quando precisar:

A Delta Lake garante transações ACID entre leituras e gravações:

  • Escritores: Vários escritores em múltiplos clusters podem modificar simultaneamente uma partição de tabela. Os gravadores veem uma exibição de instantâneo consistente da tabela e as gravações ocorrem em uma ordem serial.
  • Leitores: os leitores continuam a ver uma exibição de instantâneo consistente da tabela com a qual o trabalho do Azure Databricks começou, mesmo quando uma tabela é modificada durante um trabalho.

Confira O que são garantias ACID no Azure Databricks?.

Observação

O Azure Databricks usa o Delta Lake para todas as tabelas, por padrão.

Tópicos de isolamento

Tópico Descrição
Níveis de isolamento (WriteSerializable e Serializable) Como os dois níveis de isolamento afetam operações simultâneas e como configurá-las.
Concorrência de nível de linha Como a detecção de conflitos em nível de linha reduz conflitos de gravação para operações simultâneas nos mesmos arquivos de dados.

Para obter informações sobre isolamento de transação, comportamento de instantâneo e tratamento de conflitos, consulte Isolamento de transações.

Conflitos de alterações de metadados

Alterações nos metadados podem causar a falha de todas as operações de escrita concorrentes. Essas operações incluem alterações no protocolo de tabela, nas propriedades da tabela ou no esquema de dados.

As leituras de streaming falham quando encontram uma confirmação que altera os metadados da tabela. Se você quiser que o fluxo continue, você deve reiniciá-lo. Para obter métodos recomendados, confira Considerações de produção para Streaming Estruturado.

Exemplos de consultas que alteram metadados incluem:

-- 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);

Próximas Etapas