Pular para conteúdo

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

  1. Construa um escalonamento com write skew envolvendo duas linhas.
  2. Explique por que um SELECT seguido por UPDATE pode sofrer uma corrida.
  3. Compare conflitos otimistas com novas tentativas após deadlock.