Todos os produtos
Search
Central de documentação

MaxCompute:ACID transaction management

Última atualização: Jun 26, 2026

Quando vários jobs gravam na mesma tabela Delta simultaneamente, você precisa entender quais combinações de operações geram conflitos, como o MaxCompute os resolve e como projetar seus pipelines para evitá-los. O MaxCompute usa o MetaService para gerenciar todas as operações de modificação de dados em tabelas Delta como transações. O controle de concorrência multiversão (MVCC) isola operações simultâneas de leitura e gravação em snapshots, enquanto o controle de concorrência otimista (OCC) gerencia a concorrência entre transações.

Regras de detecção de conflitos

A tabela a seguir mostra como o MaxCompute resolve conflitos entre jobs simultâneos na mesma tabela não particionada ou partição. O job que termina primeiro é o job anterior; o que termina depois é o job posterior.

Job anterior

Job posterior

Resultado

INSERT OVERWRITE / TRUNCATE

INSERT OVERWRITE / TRUNCATE

Ambos têm êxito. O resultado do job posterior substitui o do job anterior.

INSERT OVERWRITE / TRUNCATE

INSERT INTO

O job anterior tem êxito. O job posterior falha.

INSERT OVERWRITE / TRUNCATE

UPDATE / DELETE

O job anterior tem êxito. O job posterior falha.

INSERT OVERWRITE / TRUNCATE

MINOR COMPACT

O job anterior tem êxito. O job posterior falha.

INSERT OVERWRITE / TRUNCATE

MAJOR COMPACT

O job anterior tem êxito. O job posterior falha.

INSERT INTO

INSERT OVERWRITE / TRUNCATE

Ambos têm êxito. O resultado do job posterior substitui o do job anterior.

INSERT INTO

INSERT INTO

O job anterior tem êxito. O job posterior falha.

INSERT INTO

UPDATE / DELETE

O job anterior tem êxito. O job posterior falha.

INSERT INTO

MINOR COMPACT

Ambos têm êxito. A compactação do job posterior é concluída.

INSERT INTO

MAJOR COMPACT

O job anterior tem êxito. O job posterior falha.

UPDATE / DELETE

INSERT OVERWRITE / TRUNCATE

Ambos têm êxito. O resultado do job posterior substitui o do job anterior.

UPDATE / DELETE

INSERT INTO

O job anterior tem êxito. O job posterior falha.

UPDATE / DELETE

UPDATE / DELETE

O job anterior tem êxito. O job posterior falha.

UPDATE / DELETE

MINOR COMPACT

Ambos têm êxito. A compactação do job posterior é concluída.

UPDATE / DELETE

MAJOR COMPACT

O job anterior tem êxito. O job posterior falha.

MINOR COMPACT

INSERT OVERWRITE / TRUNCATE

Ambos têm êxito. O resultado do job posterior substitui o do job anterior.

MINOR COMPACT

INSERT INTO

Ambos têm êxito. Os novos dados do job posterior são gravados.

MINOR COMPACT

UPDATE / DELETE

Ambos têm êxito. Os novos dados do job posterior são gravados.

MINOR COMPACT

MINOR COMPACT

O job anterior tem êxito. O job posterior falha.

MINOR COMPACT

MAJOR COMPACT

Ambos têm êxito. A compactação do job posterior é concluída.

MAJOR COMPACT

INSERT OVERWRITE / TRUNCATE

Ambos têm êxito. O resultado do job posterior substitui o do job anterior.

MAJOR COMPACT

INSERT INTO

Ambos têm êxito. Os novos dados do job posterior são gravados.

MAJOR COMPACT

UPDATE / DELETE

Ambos têm êxito. Os novos dados do job posterior são gravados.

MAJOR COMPACT

MINOR COMPACT

O job anterior tem êxito. O job posterior falha.

MAJOR COMPACT

MAJOR COMPACT

O job anterior tem êxito. O job posterior falha.

Nota

Essas regras se aplicam no nível da transação, não no nível de linha ou arquivo.

Otimização de conflitos de concorrência

O MaxCompute otimiza o tratamento de conflitos para combinações comuns de operações. Isso reduz falhas desnecessárias e preserva a integridade dos dados.

Nota

A otimização de conflitos de concorrência aplica-se apenas ao gerenciamento de transações de tabela única.

Resolução inteligente de conflitos

Nem todas as transações sobrepostas entram em conflito. Por exemplo, quando uma operação de clustering e uma operação INSERT INTO se sobrepõem nos horários de início e commit, ambas têm êxito. O clustering reorganiza o layout físico dos dados sem alterar seu estado lógico. Portanto, não causa inconsistência de estado com uma gravação simultânea. O MaxCompute detecta esse cenário e permite que ambas as operações prossigam. A lógica de tratamento de conflitos de transação continuará sendo otimizada para atender a mais cenários.

Nova tentativa no nível de metadados

Se a detecção de conflitos falhar, o MaxCompute tentará novamente no nível de metadados. Não é necessário ler ou gravar os dados novamente. Isso reduz o consumo de recursos em comparação à reexecução completa do job.

Atualizações atômicas de metadados

Os metadados são atualizados atomicamente para garantir a consistência dos dados.

Gerenciamento de versão de arquivos de dados

Cada transação gera um lote de novos arquivos de dados associados a dois tipos de versão:

Tipo de versão

Tipo de dado

Gerada quando

Utilizada para

Versão temporal

TIMESTAMP

Operações acionadas pelo usuário que alteram apenas a lógica dos dados. Clustering e compactação não geram nova versão temporal.

Consultas incrementais por tempo. Arquivos provenientes de clustering e compactação são excluídos.

Versão ID

Inteiro autoincremental

Toda operação de dados em uma transação, incluindo clustering e compactação.

Gerenciamento interno de transações (principal). Também disponível para consultas incrementais.