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
- Propriedades ACID e anomalias
- Níveis de isolamento: READ COMMITTED, REPEATABLE READ, SERIALIZABLE
- Interbloqueios: detecção e prevenção
- Bloqueio otimista vs pessimista