Pular para o conteúdo principal

Questão de Banco de Dados — Transações (Locks, ACID, etc.) — FGV 2024

Banco de DadosTransações (Locks, ACID, etc.)
Código
fg165217
Banca
FGV
Órgão
TJ AP
Ano
2024
Cargo
AJ ( )
O mecanismo de recuperação de banco de dados precisa garantir que uma transação possa ser desfeita.   Para execução do rollback em cascata são necessárias entradas de log do(s) valor(es):
  1. Anovo;
  2. Bantigo;
  3. Cantigo e novo;
  4. Dwrite-ahead;
  5. Eundo/redo.
Revelar gabarito e comentário

GabaritoB — antigo;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Log de Transações e Rollback em Cascata

Gabarito: letra B. Para executar o rollback em cascata, o mecanismo de recuperação precisa das entradas de log do valor antigo (before-image) dos dados. Isso porque, ao desfazer uma transação que falhou, o sistema deve restaurar o estado anterior à sua execução, e apenas o valor antigo permite essa restauração — o valor novo (after-image) é usado no redo (refazer), não no undo (desfazer).

O log de transações é o registro cronológico das operações realizadas sobre o banco de dados, essencial para a recuperação após falhas. Cada entrada de log pode conter o valor antigo (before-image) e/ou o valor novo (after-image) de um item de dados modificado. A escolha de quais valores registrar depende da estratégia de recuperação adotada pelo SGBD.

No rollback em cascata, uma transação T2 que leu dados de uma transação T1 (que ainda não foi confirmada) precisa ser desfeita quando T1 é abortada. Para desfazer T2, o sistema precisa restaurar os valores que T2 modificou ao estado anterior à sua execução — ou seja, precisa do valor antigo de cada item que T2 alterou. Sem o before-image, não há como reverter as alterações de T2, pois o valor novo já foi gravado e não indica qual era o estado original.

A distinção fundamental é:

Operação

Valor necessário no log

Finalidade

Undo (rollback)

Valor antigo (before-image)

Restaurar o estado anterior à transação

Redo (replay)

Valor novo (after-image)

Reaplicar as alterações de uma transação confirmada

A pegadinha da banca está em confundir o valor necessário para o undo (antigo) com o valor necessário para o redo (novo). O candidato que memoriza apenas "log contém before e after" pode marcar a alternativa C, mas a questão pergunta especificamente sobre o rollback em cascata, que é uma operação de undo — e para undo, apenas o valor antigo é suficiente.

NÃO CAIA NESSA!

A banca explora a confusão entre undo e redo. No rollback (undo), o que importa é o valor antigo; o valor novo é usado no redo, para reaplicar transações confirmadas. Se a questão pedisse "refazer" ou "replay", a resposta seria o valor novo. Aqui, como é "desfazer", o gabarito é o valor antigo.

Alternativa A — ❌ Incorreta

O valor novo (after-image) é usado no redo (refazer), não no undo. No rollback, precisamos restaurar o estado anterior, e o valor novo não informa qual era esse estado — ele apenas indica o valor que foi gravado após a modificação.

Alternativa B — ✅ Correta ⟵ GABARITO

O rollback em cascata exige o valor antigo (before-image) de cada item modificado pela transação a ser desfeita. Com o before-image, o sistema restaura o estado anterior à transação, desfazendo seus efeitos. É exatamente o que a atomicidade exige: se a transação falhou, o banco deve voltar ao estado consistente anterior.

Alternativa C — ❌ Incorreta

Embora o log possa conter tanto o valor antigo quanto o novo (para suportar undo e redo), o rollback em cascata especificamente só precisa do valor antigo. A alternativa C generaliza o conteúdo do log, mas não responde à pergunta sobre o que é necessário para o undo.

Alternativa D — ❌ Incorreta

Write-ahead é uma técnica de log (write-ahead logging — WAL) que garante que o log seja gravado em disco antes dos dados serem modificados. Não é um valor de log, mas uma política de gravação. A questão pergunta sobre os valores necessários para o rollback, não sobre a técnica de gravação.

Alternativa E — ❌ Incorreta

Undo/redo é uma estratégia de recuperação que usa tanto o valor antigo quanto o novo para desfazer e refazer operações. Mas, novamente, para o rollback em cascata (uma operação de undo), apenas o valor antigo é necessário. A alternativa E descreve a estratégia completa, não o requisito específico do undo.

Gabarito: letra B — para o rollback em cascata, o log deve conter o valor antigo (before-image) dos dados modificados.

Link permanente: /questoes/fg165217