Compartilhar via


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

Esta página descreve os níveis de isolamento e o comportamento de conflitos de gravação para tabelas Delta Lake no Azure Databricks.

O Delta Lake fornece garantias de transação ACID entre leituras e gravações:

  • Escritores: Vários escritores em múltiplos clusters podem modificar simultaneamente uma partição de tabela. Os escritores veem uma visualização instantânea consistente da tabela, e as alteraçõ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ção de metadados

Alterações de metadados fazem com que todas as operações de gravação simultâneas falhem. 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.

Veja a seguir exemplos de consultas que alteram metadados:

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