0Pricing
SQL Academy · Aula

Propriedades ACID e anomalias

Revise atomicidade, consistência, isolamento, durabilidade e as quatro anomalias clássicas: leitura suja, leitura não repetível, leitura fantasma e atualização perdida.

Propriedades ACID e anomalias é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

ACID

Uma transação é confiável quando é:

  • Atômica — tudo ou nada
  • Consistente — leva o banco de dados de um estado válido a outro
  • Isolada — transações simultâneas não interferem umas nas outras
  • Durável — depois de confirmados, os dados sobrevivem a falhas

Uma transação em SQL

Envolva as operações em BEGIN ... COMMIT:

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
-- If anything fails, ROLLBACK leaves both rows unchanged.

Atomicidade em ação

Se o segundo UPDATE falhar, o primeiro será revertido — o dinheiro não será perdido pela metade:

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Crash here, or ROLLBACK: account 1 is unchanged.

Consistência

As restrições (NOT NULL, CHECK, FK) são verificadas na confirmação. Uma transação que deixaria o banco de dados em um estado inválido falha:

BEGIN;
INSERT INTO orders (user_id, total) VALUES (999, 100);  -- FK fails on commit if user 999 doesn't exist.
COMMIT;
-- ERROR: insert or update violates foreign key constraint
-- ROLLBACK happens automatically.

Isolamento: por que isso importa

Duas transações simultâneas podem corromper a visão que cada uma tem dos dados sem isolamento. Anomalias clássicas:

  • Leitura suja — ler dados não confirmados
  • Leitura não repetível — a mesma consulta devolve linhas diferentes
  • Fantasma — novas linhas aparecem no meio da transação
  • Atualização perdida — duas atualizações substituem os resultados uma da outra

Leitura suja

Ler uma linha que outra transação alterou, mas ainda não confirmou. O PostgreSQL impede isso em todos os níveis de isolamento.

Leitura não repetível

Você lê a linha 1, outra transação confirma uma atualização na linha 1 e você lê novamente — o valor é diferente.

Leitura fantasma

Você executa SELECT COUNT(*) duas vezes na mesma transação. Entre as chamadas, outra transação confirma um INSERT — a segunda contagem é maior.

Atualização perdida

Duas transações leem saldo=100, ambas gravam saldo=saldo-50 e ambas confirmam — uma das reduções de 50 é perdida.

Durabilidade

Depois que COMMIT retorna, a alteração está no disco (ou foi replicada, dependendo das configurações). Uma falha um milissegundo depois não a perderá. O PostgreSQL garante a durabilidade por meio de WAL (registro antecipado).

Confirmação automática

Por padrão, cada instrução é sua própria transação:

UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Implicitly: BEGIN; statement; COMMIT;

SAVEPOINT

Reversão parcial dentro de uma transação:

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
SAVEPOINT before_step2;
UPDATE accounts SET balance = balance + 100 WHERE id = 999;
-- ERROR — but we can recover:
ROLLBACK TO SAVEPOINT before_step2;
-- continue
COMMIT;

Recapitulação

As transações são a rede de segurança dos bancos de dados relacionais.

  • ACID: atômicas, consistentes, isoladas e duráveis
  • Quatro anomalias clássicas
  • BEGIN ... COMMIT ou ROLLBACK
  • SAVEPOINT para reversão parcial

Verificação rápida

Que anomalia ocorre quando duas transações leem o mesmo valor, modificam-no e ambas confirmam?

Perguntas Frequentes

A aula “Propriedades ACID e anomalias” é grátis?

Sim — o texto completo de “Propriedades ACID e anomalias” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “Propriedades ACID e anomalias”?

Revise atomicidade, consistência, isolamento, durabilidade e as quatro anomalias clássicas: leitura suja, leitura não repetível, leitura fantasma e atualização perdida. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Propriedades ACID e anomalias”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Propriedades ACID e anomalias
  2. Níveis de isolamento: READ COMMITTED, REPEATABLE READ, SERIALIZABLE
  3. Interbloqueios: detecção e prevenção
  4. Bloqueio otimista vs pessimista
← Voltar para SQL Academy