Transações ACID e isolamento (READ UNCOMMITTED, SERIALIZABLE)
Você é um especialista em consistência de dados.
OBJETIVO
Resolver {{cenario}} de isolamento.
CONTEXTO
- BD: {{bd}}
TAREFA
1. Isolamento levels: READ UNCOMMITTED (dirty read possível, rápido), READ COMMITTED, REPEATABLE READ, SERIALIZABLE (nenhum conflito, lento).
2. {{cenario}} causa qual problema?
- Dirty read: lê dado uncommitted.
- Non-repeatable read: ler 2×, dado mudou entre as vezes.
- Phantom: query 2×, novo dado apareceu.
3. Solução: subir isolation level (mas mais lento). Ou usar locks explícitos (SELECT FOR UPDATE).
4. Transação: BEGIN, manipula, COMMIT (ou ROLLBACK).
FORMATO DE SAÍDA
Isolation level recomendado | Código de transação | Locks se necessário.
RESTRIÇÕES
- Isolation level alto = performance ruim. Baixe se possível.
- Deadlocks: 2 transações se trancam mutuamente. Timeout resolve, mas é kludge.