Questão de Banco de Dados — Recuperação de falhas — FGV 2025
- Código
- fg116228
- Banca
- FGV
- Órgão
- MPU
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista do - Suporte e Infraestrutura
- ANO-UNDO/REDO;
- BUNDO/REDO;
- CUNDO/NO-REDO;
- Dlogging write-ahead;
- Esteal/no-force.
GabaritoA — NO-UNDO/REDO;
Gabarito: letra A – NO-UNDO/REDO. A descrição do enunciado aponta para uma política no-steal (atualizações de transações não confirmadas não são gravadas no disco, apenas no log ou buffer) e no-force (as alterações de transações confirmadas só são refletidas no BD após o commit). Em tais condições, não há necessidade de desfazer transações não confirmadas (UNDO) – pois elas não estão no disco –, mas é preciso refazer (REDO) as transações confirmadas que ainda não foram persistidas. O algoritmo NO-UNDO/REDO é exatamente o que se encaixa nesse cenário.
A banca testa a compreensão das correlações entre as políticas de buffer e os algoritmos de recuperação. A frase "Ao desfazer as operações confirmadas" é uma armadilha: a intenção é descrever que as transações que estavam confirmadas precisaram ser refeitas (REDO), mas o texto se refere a "desfazer" como sinônimo de "eliminar a inconsistência" – o que gera confusão. O candidato deve interpretar com base no contexto geral.
Corresponde ao algoritmo NO-UNDO/REDO, que adota as políticas no-steal e no-force. Como as transações não confirmadas não foram escritas no disco, não é preciso desfazê-las (no-undo); mas as confirmadas podem não ter sido gravadas, exigindo o redo (REDO) a partir do log.
UNDO/REDO implica política steal/no-force. No steal, as atualizações de transações não confirmadas podem ser gravadas no disco antes do commit, o que exigiria UNDO para desfazê-las. O enunciado deixa claro que as atualizações só iam para o BD após o commit, portanto não há steal.
UNDO/NO-REDO corresponde a steal/force. A política force exige que todas as alterações de uma transação sejam gravadas no disco antes do commit – o que contraria a afirmação "somente eram gravadas no banco após a confirmação da transação". Assim, não se aplica.
"Logging write-ahead" (registro de log com gravação antecipada) é uma técnica utilizada por todos os algoritmos de recuperação, e não um algoritmo específico. A questão pede o algoritmo (UNDO/REDO, NO-UNDO/REDO etc.), não uma técnica de log.
"Steal/no-force" é uma política de gerenciamento de buffer, não um algoritmo de recuperação. Além disso, steal não se aplica ao caso (não havia escrita de não confirmadas no disco) e no-force sozinho não define o algoritmo – ele seria parte de UNDO/REDO ou NO-UNDO/REDO.
Conclusão: apenas a alternativa A (NO-UNDO/REDO) é coerente com a situação descrita: sem necessidade de UNDO (no-steal), mas com necessidade de REDO (no-force).
A banca usa "desfazer as operações confirmadas" para induzir ao erro. O candidato pode pensar em UNDO, mas na verdade a expressão quer dizer "refazer (REDO) as operações confirmadas que não estavam no disco". Lembre-se: com no-steal, UNDO é desnecessário; com no-force, REDO é obrigatório.
Monte uma tabela mental ou anote a correspondência:
Política de buffer | Algoritmo |
|---|---|
steal / no-force | UNDO/REDO |
steal / force | UNDO/NO-REDO |
no-steal / no-force | NO-UNDO/REDO |
no-steal / force | NO-UNDO/NO-REDO |
Para a prova, identifique primeiro se há ou não escrita de dados não confirmados no disco (steal? sim ⇒ UNDO; não ⇒ NO-UNDO) e se as confirmações são forçadas ao disco antes do commit (force? sim ⇒ NO-REDO; não ⇒ REDO).
Link permanente: /questoes/fg116228