Propriedades ACID explicadas
Atomicidade, consistência, isolamento e durabilidade com exemplos concretos.
Propriedades ACID explicadas é uma aula grátis de SQL Interview Prep 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 Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Interview Prep inclui 4 aulas no total.
Por que os entrevistadores perguntam sobre ACID
Quando um entrevistador sênior diz “explique ACID passo a passo”, ele não está testando se você decorou quatro palavras. Ele quer saber se você entende o que um banco de dados garante quando muitos usuários o acessam ao mesmo tempo.
ACID significa Atomicidade, Consistência, Isolamento e Durabilidade. Todo banco de dados transacional (PostgreSQL, MySQL/InnoDB, SQL Server, Oracle) promete essas quatro propriedades para o trabalho realizado dentro de uma transação.
As respostas mais fortes relacionam cada letra a uma falha concreta que ela impede. Nas próximas cenas, faremos exatamente isso.
O que é uma transação?
Uma transação é uma unidade de trabalho que o banco de dados trata como uma única etapa indivisível. Você a inicia com BEGIN, executa uma ou mais instruções e, em seguida, usa COMMIT para torná-la permanente ou ROLLBACK para descartar tudo.
O exemplo clássico é uma transferência bancária: debitar uma conta e creditar outra. As duas operações precisam acontecer, ou nenhuma delas. Uma transação é o mecanismo que permite fazer essa promessa.
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;A = Atomicidade
Atomicidade significa que uma transação é tudo ou nada. Se alguma instrução falhar ou o servidor travar no meio da operação, toda alteração dessa transação será revertida, como se ela nunca tivesse começado.
No exemplo da transferência, se o crédito falhar depois que o débito for concluído, a atomicidade garante que o débito também será desfeito. Você nunca perde dinheiro por causa de uma operação incompleta.
Formulação para entrevista: "A atomicidade garante que a transação seja confirmada como um todo ou não seja confirmada, sem deixar um estado parcial."
Atomicidade em ação
Aqui, a segunda atualização viola uma restrição CHECK (o saldo não pode ficar negativo). O banco de dados aborta a transação, e o ROLLBACK também desfaz a primeira atualização.
O ponto principal para entrevistas é: depois da reversão, a conta 1 ainda tem seu saldo original. Não há nenhuma escrita parcial armazenada na tabela.
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- next line fails: balance would go below 0
UPDATE accounts SET balance = balance - 999999 WHERE id = 2;
ROLLBACK; -- account 1 is restored to its original balanceC = Consistência
Consistência significa que uma transação leva o banco de dados de um estado válido para outro estado válido. Toda transação confirmada precisa respeitar todas as regras definidas: restrições, chaves estrangeiras, gatilhos e cascatas.
Se uma transação deixaria uma restrição violada (uma chave estrangeira órfã, uma chave primária duplicada ou um CHECK que falhou), o banco de dados se recusa a confirmá-la.
Uma nuance a mencionar: o banco de dados impõe as regras declaradas, mas as invariantes no nível da aplicação ("um usuário pode ter no máximo 3 sessões ativas") são responsabilidade sua, a menos que sejam modeladas como restrições.
Consistência imposta por restrições
A consistência é, em grande parte, a soma das regras do seu esquema. Abaixo, uma chave estrangeira garante que você nunca possa inserir um pedido para um cliente que não existe.
Se a inserção fizer referência a um cliente inexistente, a transação falhará, a atomicidade a reverterá e a consistência será preservada. É por isso que os entrevistadores dizem que atomicidade e consistência trabalham juntas.
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT NOT NULL REFERENCES customers(id),
amount NUMERIC(10,2) CHECK (amount > 0)
);
-- This fails if customer 999 does not exist, keeping data consistent
INSERT INTO orders (id, customer_id, amount) VALUES (1, 999, 50.00);I = Isolamento
Isolamento significa que transações concorrentes não interferem umas nas outras. Idealmente, cada transação se comporta como se fosse executada sozinha, mesmo quando dezenas são executadas ao mesmo tempo.
Na prática, os bancos de dados oferecem diferentes níveis de isolamento, que trocam rigor por desempenho. Níveis mais fracos permitem certas anomalias (leituras sujas e leituras fantasmas) em troca de maior concorrência.
Esta é a parte mais ampla de qualquer entrevista sobre ACID, por isso as próximas duas lições abordam detalhadamente os níveis de isolamento e as anomalias de leitura.
Por que o isolamento é um espectro
O isolamento perfeito (SERIALIZABLE) é caro porque precisa impedir todos os possíveis conflitos entre execuções intercaladas, geralmente bloqueando ou abortando transações.
Por isso, o padrão SQL define quatro níveis. Uma armadilha comum em entrevistas é os candidatos presumirem que o isolamento é binário. Não é. Você escolhe explicitamente o grau de isolamento desejado.
READ UNCOMMITTEDmais fracoREAD COMMITTEDREPEATABLE READSERIALIZABLEmais forte
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT SUM(balance) FROM accounts;
-- ... business logic ...
COMMIT;D = Durabilidade
Durabilidade significa que, depois que uma transação é confirmada, suas alterações sobrevivem a falhas, quedas de energia e reinicializações. Uma transação confirmada está armazenada em um armazenamento estável.
Os bancos de dados conseguem isso com um registro de gravação antecipada (WAL): as alterações são gravadas em um registro durável antes de os arquivos de dados serem atualizados. Durante a reinicialização, o mecanismo reproduz o registro para recuperar qualquer trabalho confirmado que ainda não tivesse chegado aos arquivos principais.
Formulação para entrevista: "A durabilidade é garantida pelo WAL; a confirmação só retorna depois que o registro foi descarregado no disco."
Aplicando tudo à transferência bancária
Uma única transferência exercita as quatro propriedades ao mesmo tempo:
- Atomicidade: as duas atualizações são aplicadas ou nenhuma delas é.
- Consistência: um CHECK mantém os saldos não negativos.
- Isolamento: uma leitura concorrente não vê uma transferência pela metade.
- Durabilidade: depois de COMMIT, os novos saldos sobrevivem a uma falha.
Conseguir relacionar um único exemplo às quatro letras é exatamente o que rende pontos na entrevista.
BEGIN;
UPDATE accounts SET balance = balance - 100
WHERE id = 1 AND balance >= 100;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;Perguntas comuns de acompanhamento
Os entrevistadores costumam explorar os limites. Esteja preparado para responder:
- "Qual propriedade uma chave estrangeira impõe?" Consistência.
- "O que protege você contra uma falha do servidor no meio de uma transação?" Atomicidade (reversão do que não foi confirmado) e durabilidade (reprodução do que foi confirmado).
- "O isolamento é gratuito?" Não, um isolamento mais forte reduz a concorrência.
- "Os bancos NoSQL oferecem ACID?" Muitos trocam isso por disponibilidade (BASE); diga que depende do mecanismo.
Verificação rápida
Teste sua compreensão sobre a função de cada propriedade ACID.
Recapitulação: ACID em uma frase
Agora você consegue responder à pergunta com clareza:
- Atomicidade - tudo ou nada; o trabalho parcial é revertido.
- Consistência - toda confirmação respeita as restrições e deixa um estado válido.
- Isolamento - transações concorrentes não corrompem umas às outras; o rigor pode ser ajustado.
- Durabilidade - os dados confirmados sobrevivem a falhas, respaldados pelo registro de gravação antecipada.
Associe cada letra a uma falha concreta que ela impede, e você passará tranquilamente pela introdução de qualquer entrevista sobre concorrência.
Perguntas Frequentes
A aula “Propriedades ACID explicadas” é grátis?
Sim — o texto completo de “Propriedades ACID explicadas” é 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 Interview Prep, atualize para CoddyKit PRO. O curso de SQL Interview Prep inclui 4 aulas no total.
O que vou aprender em “Propriedades ACID explicadas”?
Atomicidade, consistência, isolamento e durabilidade com exemplos concretos. Você pratica SQL Interview Prep 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 Interview Prep?
Nenhuma experiência prévia é necessária. SQL Interview Prep 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 explicadas”?
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 Interview Prep?
Sim. Cada aula de SQL Interview Prep 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 explicadas
- Os quatro níveis de isolamento
- Leituras sujas, não repetíveis e fantasmas
- Deadlocks, bloqueios e MVCC