Transações e Isolamento¶
Uma transação agrupa operações sob uma decisão atômica de commit ou rollback. ACID é um conjunto de objetivos e mecanismos, não uma promessa de que a lógica da aplicação não possa ter condições de corrida.
ACID¶
- Atomicidade: os efeitos sofrem commit juntos ou nenhum sofre.
- Consistência: uma transação correta preserva os invariantes declarados.
- Isolamento: a execução concorrente é restringida segundo um modelo anunciado.
- Durabilidade: os efeitos confirmados sobrevivem às falhas cobertas pela garantia do sistema.
Anomalias¶
- leitura suja: observar dados ainda não confirmados de outra transação;
- leitura não repetível: uma nova leitura do mesmo item retorna dados confirmados diferentes;
- fantasma: a repetição de uma consulta por predicado retorna um conjunto diferente;
- atualização perdida: uma atualização sobrescreve outra sem detectá-la;
- write skew: transações leem estados sobrepostos e escrevem itens diferentes, violando juntas um invariante.
Os nomes dos níveis de isolamento não descrevem completamente o comportamento de todo banco. Estude o modelo real de controle de concorrência e as garantias contra anomalias do fornecedor.
Controle otimista e pessimista¶
A verificação otimista de versão detecta atualizações conflitantes durante o commit ou a atualização e funciona bem quando os conflitos são raros. O bloqueio pessimista restringe o acesso concorrente mais cedo e pode aumentar a espera ou o risco de deadlock. Cada nova tentativa deve repetir toda a decisão transacional a partir de um estado novo e obedecer a uma política limitada de novas tentativas e deadline.
Limites¶
Uma transação local do banco de dados não inclui atomicamente uma chamada HTTP comum nem uma operação de message broker. Use padrões como outbox transacional, consumidores idempotentes, sagas e reconciliação conforme a semântica de falhas.
Exercícios¶
- Construa um escalonamento com write skew envolvendo duas linhas.
- Explique por que um
SELECTseguido porUPDATEpode sofrer uma corrida. - Compare conflitos otimistas com novas tentativas após deadlock.