Atomicidade em banco de dados: conceito e exemplo

Entenda o princípio do “tudo ou nada” nas transações, veja como funcionam COMMIT e ROLLBACK e diferencie atomicidade das demais propriedades ACID

Por
Publicado em
3 min. de leitura

O que é atomicidade em banco de dados

A atomicidade em banco de dados é a propriedade que garante que uma transação produza todos os seus efeitos ou tenha suas alterações desfeitas. A ideia de “tudo ou nada” permite reunir operações relacionadas em uma única unidade lógica de trabalho. Para quem estuda para concursos de TI, compreender esse conceito ajuda a interpretar situações em que uma falha interrompe uma sequência de comandos. O ponto central é o resultado da transação: uma execução incompleta não pode deixar parte das alterações confirmada como se a operação tivesse terminado corretamente. [1]

Imagine uma transferência de R$ 150 entre duas contas: a conta de origem deve perder esse valor, e a conta de destino deve recebê-lo. Se o débito for confirmado isoladamente e uma falha impedir o crédito, a transferência ficará incompleta. O conceito de atomicidade em banco de dados exige que essas alterações pertençam à mesma transação. Assim, o sistema confirma a transferência completa ou desfaz os efeitos da tentativa. A indivisibilidade é lógica: existem várias instruções internas, mas elas formam uma unidade para confirmação ou cancelamento. [2]

Como funciona a atomicidade com SQL

No PostgreSQL, BEGIN inicia um bloco de transação, COMMIT solicita sua confirmação e ROLLBACK cancela a transação ainda aberta. O exemplo abaixo ilustra o caminho de sucesso e pressupõe que as duas contas existem e que a transferência foi validada. Em uma aplicação real, também é necessário conferir saldo, autorização e quantidade de linhas alteradas antes da confirmação. Um UPDATE que não encontra a conta pode alterar zero linhas sem gerar erro; o sistema precisa reconhecer essa situação e cancelar a operação. A atomicidade não identifica, por conta própria, todas as falhas de uma regra de negócio. [1][3][4]

BEGIN;
UPDATE contas SET saldo = saldo – 150.00 WHERE id = 10;
UPDATE contas SET saldo = saldo + 150.00 WHERE id = 20;
COMMIT;

Diferenças entre as propriedades ACID

Atomicidade, consistência, isolamento e durabilidade formam o conjunto ACID. A atomicidade trata da aplicação integral da transação; a consistência exige a preservação das regras e restrições de integridade. Na transferência, a primeira impede a confirmação de apenas uma das etapas, enquanto a segunda envolve condições como manter referências válidas e respeitar regras de saldo. O isolamento disciplina os efeitos da execução simultânea de transações. A durabilidade assegura a permanência das alterações depois de uma confirmação bem-sucedida, conforme as garantias e configurações do sistema. Cada propriedade responde a uma preocupação diferente do processamento transacional. [5][6][7]

O que acontece quando uma transação falha

Se ocorrer uma falha antes da confirmação, o SGBD utiliza seus mecanismos de recuperação para impedir que os efeitos incompletos permaneçam confirmados. A implementação varia: pode envolver registros de log, informações de desfazimento, versões de dados e outros recursos. O SQLite documenta o uso de journal em seu processo de commit atômico; o PostgreSQL utiliza WAL para registrar alterações e apoiar a recuperação após falhas. Desfazer uma transação também não depende sempre de o usuário conseguir enviar ROLLBACK: uma queda do processo ou do servidor exige atuação dos mecanismos de recuperação. [2][8]

Como estudar atomicidade para concursos de TI

Na preparação para concursos, associe a expressão “tudo ou nada” à atomicidade e resolva cenários de operações dependentes, como registrar um pedido e baixar seu estoque. Enunciados sobre concorrência devem levar à análise do isolamento; afirmações sobre permanência após confirmação remetem à durabilidade. Também vale revisar os limites da transação: comandos executados em autocommit podem constituir transações separadas. Por fim, evite a generalização de que apenas bancos relacionais oferecem atomicidade. O MongoDB, por exemplo, possui operações atômicas em um documento e oferece transações para operações que abrangem vários documentos. [6][9]

Perguntas frequentes sobre atomicidade em banco de dados

O que é atomicidade em banco de dados?

É a propriedade que faz uma transação valer como uma unidade indivisível de trabalho. Suas alterações são confirmadas em conjunto ou desfeitas quando a transação é cancelada, evitando a confirmação de um resultado parcial. [2]

Como funciona a atomicidade em uma transação?

As operações que precisam ter o mesmo destino são agrupadas em uma transação. O SGBD controla a confirmação e a recuperação desse conjunto. Quando há cancelamento, os efeitos transacionais da tentativa são descartados, preservando o resultado anterior àquelas alterações. [2]

Qual é a diferença entre COMMIT e ROLLBACK?

COMMIT confirma a transação; ROLLBACK cancela a transação aberta e descarta suas alterações. Depois de um COMMIT concluído, um ROLLBACK posterior não desfaz aquela transação. Corrigir seus efeitos exige uma nova operação apropriada. [4][6]

Qual é a diferença entre atomicidade e consistência?

A atomicidade impede que apenas parte da transação seja confirmada. A consistência envolve preservar as regras que definem estados válidos dos dados. Restrições de chave estrangeira e CHECK ajudam a expressar essas regras, mas a aplicação também precisa implementar corretamente a lógica do negócio. [5]

O que acontece quando uma transação falha no meio da execução?

Se a transação for abortada antes da confirmação, seus efeitos transacionais precisam ser desfeitos. No PostgreSQL, um erro que deixa o bloco abortado exige ROLLBACK ou recuperação por um ponto de salvamento aplicável. O tratamento específico depende do SGBD e da falha. [1][4]

Atomicidade é uma propriedade exclusiva de bancos de dados relacionais?

Não. Bancos de documentos e outros sistemas também podem oferecer operações atômicas e transações. É preciso verificar o alcance da garantia: ela pode valer para um único registro ou documento, ou abranger múltiplos documentos e operações em uma transação. [9]

Como a atomicidade é cobrada em concursos públicos de TI?

Uma forma de abordagem é apresentar operações dependentes e perguntar qual propriedade impede sua confirmação parcial. Ao estudar, identifique a unidade de trabalho e compare a descrição com ACID. Use questões da banca do seu edital para verificar a terminologia e o nível de detalhe exigidos.

Qual é a diferença entre atomicidade, isolamento e durabilidade em bancos de dados?

Atomicidade trata da integralidade dos efeitos de uma transação. Isolamento trata das interações entre transações concorrentes, com garantias que variam conforme o nível adotado. Durabilidade trata da preservação das alterações confirmadas diante das falhas cobertas pelas garantias do sistema. [6][7][8]

Fontes técnicas

[1] PostgreSQL — Transactions

[2] SQLite — Atomic Commit In SQLite

[3] PostgreSQL — UPDATE

[4] PostgreSQL — ROLLBACK

[5] PostgreSQL — Constraints

[6] MySQL — InnoDB and the ACID Model

[7] PostgreSQL — Transaction Isolation

[8] PostgreSQL — Write Ahead Logging

[9] MongoDB — Transactions

Por
Publicado em
3 min. de leitura