Concorrência em Banco de Dados – Atualização Perdida (Lost Update)
Gabarito: letra B. O cenário descrito (T1 lê saldo, atualiza; T2 lê o mesmo saldo antigo antes do COMMIT de T1 e também atualiza) caracteriza o problema de atualização perdida (lost update): a segunda atualização sobrescreve a primeira sem conhecimento do valor já modificado, fazendo com que a atualização de T1 seja perdida.
A banca testa a identificação dos problemas de concorrência clássicos. O contexto descreve três problemas principais: atualização perdida, dependência sem commit (dirty read) e análise inconsistente (non-repeatable read/phantom). Vamos analisar cada alternativa.
Alternativa A – ❌ Incorreta
Leitura suja (dirty read) ocorre quando uma transação lê dados não confirmados (sem COMMIT) de outra transação. No enunciado, T2 lê o saldo antigo, não o novo valor ainda não comitado por T1. Portanto, não há leitura suja.
Alternativa B – ✅ Correta ⟵ GABARITO
Atualização perdida (lost update) é exatamente o que descreve o enunciado: T1 lê e atualiza o saldo; T2, antes do COMMIT de T1, lê o mesmo saldo antigo e também realiza uma atualização baseada nesse valor desatualizado. A atualização de T1 é sobrescrita pela de T2, sendo perdida. Esse é o problema clássico ilustrado na Figura 16.1 do contexto (conteúdo de apoio).
Alternativa C – ❌ Incorreta
Leitura não repetível (non-repeatable read) ocorre quando, dentro de uma mesma transação, uma leitura retorna valores diferentes porque outra transação modificou o dado entre as duas leituras. No enunciado, T2 faz apenas uma leitura, não duas, e não há repetição.
Alternativa D – ❌ Incorreta
Fantasma (phantom read) ocorre quando uma transação executa a mesma consulta duas vezes e obtém um conjunto diferente de linhas (novas linhas inseridas por outra transação). O enunciado trata de atualização de um único registro, não de inserção de novos registros.
Alternativa E – ❌ Incorreta
Deadlock é uma situação de espera circular entre transações, em que cada uma aguarda um recurso bloqueado pela outra. No cenário, não há bloqueio mútuo; há apenas uma concorrência de leitura/escrita que gera perda de atualização, não impasse.
Gabarito: letra B.