No contexto de sistemas de gerenciamento de banco de dados ...

Próximas questões
Com base no mesmo assunto
Q3881251 Banco de Dados
No contexto de sistemas de gerenciamento de banco de dados relacionais, considere um cenário hipotético em que duas transações simultâneas (T1 e T2) tentam atualizar o saldo da conta bancária de um analista de infraestrutura da ALEGO. A transação T1 lê o saldo de R$100,00 da conta, a Transação T2 também lê o mesmo saldo R$100,00 da conta. A Transação T1 adiciona R$ 50,00 na conta e grava e, logo em seguida a Transação T2 adiciona R$ 30,00 na conta e grava. O resultando do saldo final é de R$130,00 em vez de R$180,00.

O problema de concorrência e propriedade ACID que foi violada são, respectivamente,
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: B

Fundamento decisivo: As duas transações leram o mesmo saldo inicial de R$100,00 e gravaram alterações calculadas sobre esse valor antigo, de modo que a segunda gravação sobrescreveu o efeito da primeira. Isso caracteriza atualização perdida e, no contexto cobrado, indica violação do isolamento, o que conduz à alternativa B.

Tema central: Atualização perdida
Análise das alternativas
A
Errada
Está errada porque o enunciado não mostra leitura de dado não confirmado por outra transação, então não há leitura suja. Também não há indicação de perda de dados após confirmação, de modo que durabilidade não é a propriedade atingida.
B
Certa
A alternativa B está certa porque o defeito descrito é o de atualização perdida: T1 e T2 partem do mesmo saldo original, calculam novos valores independentemente e a gravação posterior elimina o acréscimo anterior, produzindo saldo final de R$130,00 em vez de R$180,00. No contexto cobrado, a propriedade ACID diretamente comprometida é o isolamento, pois a interferência entre execuções concorrentes ocorreu justamente por falta de isolamento suficiente entre as transações.
C
Errada
Está errada porque não houve releitura do mesmo item pela mesma transação com resultado diferente, que é o elemento necessário para leitura não repetível. Além disso, a base do problema não é quebra de consistência em sentido ACID, mas interferência concorrente por isolamento insuficiente.
D
Errada
Está errada porque, embora existam duas gravações sobre o mesmo item, o rótulo técnico cobrado para o efeito produzido é atualização perdida, não apenas conflito de escrita-escrita. Também não há falha de atomicidade, porque o enunciado não relata execução parcial, falha, rollback ou necessidade de desfazer parte de transação.
E
Errada
Está errada porque o caso não é primariamente um conflito leitura-escrita, mas uma atualização concorrente em que a gravação final sobrescreve a anterior. Além disso, 'inconsistência' é formulação genérica e não corresponde à propriedade ACID diretamente identificável no cenário, que é o isolamento.
Pegadinha da questão
A confusão real era trocar a anomalia específica por rótulos mais genéricos: perceber duas escritas e marcar conflito de escrita-escrita, ou ver o saldo final errado e marcar consistência, quando o que define o caso é atualização perdida por falha de isolamento.
Dica para questões semelhantes
  • Se duas transações leem o mesmo valor antigo e depois gravam atualizações derivadas dele, verifique atualização perdida.
  • Quando o erro nasce da interferência entre transações concorrentes, a propriedade ACID a conferir primeiro é isolamento.
  • Não marque leitura suja sem leitura de dado ainda não confirmado por outra transação.
  • Não marque leitura não repetível sem releitura do mesmo item pela mesma transação.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

O cenário descreve o seguinte fluxo:

  1. T1 lê Saldo = 100.
  2. T2 lê Saldo = 100 (antes de T1 atualizar).
  3. T1 calcula 100 + 50 = 150 e grava (COMMIT).
  4. T2 calcula 100 + 30 = 130 e grava (COMMIT).

Como a T2 baseou seu cálculo em um valor "antigo" (que já havia sido alterado por T1, mas T2 não "percebeu"), ela acabou sobrescrevendo a alteração feita por T1. O depósito de R$ 50,00 foi simplesmente "perdido".

O Problema (Atualização Perdida): Ocorre quando duas transações leem o mesmo dado e ambas tentam atualizá-lo com base no valor lido. A última transação a gravar "atropela" a anterior.

A Propriedade Violada (Isolamento): O I do ACID (Isolation) dita que a execução de uma transação não deve ser interferida por outras transações simultâneas. Se o isolamento fosse perfeito (ou estivesse ao nível Serializable), a T2 seria obrigada a esperar o fim de T1 ou teria que ler o saldo atualizado (150) antes de somar seus 30.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo