Questão de Banco de Dados — Recuperação de Dados em SGBDs — CESPE / CEBRASPE 2023
Banco de Dados›Recuperação de Dados em SGBDs
Código
ce398073
Banca
CESPE / CEBRASPE
Órgão
DATAPREV
Ano
2023
Cargo
Ana TI ( )
No que se refere à recuperação após falha, julgue o item a seguir.
O esquema de recuperação do banco de dados independe do esquema de controle de concorrência, uma vez que, no restauro a partir dos esquemas baseados em log, o valor é recuperado a partir de informação de UNDO em um registro e no log.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoE — Errado
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”.
Recuperação de dados: relação entre controle de concorrência e esquemas de log
Gabarito: Errado. O esquema de recuperação do banco de dados não é independente do esquema de controle de concorrência; pelo contrário, eles são intimamente relacionados. A afirmação erra ao dizer que a recuperação independe do controle de concorrência, e também ao restringir a recuperação baseada em log apenas à informação de UNDO — na prática, os esquemas de log utilizam tanto UNDO quanto REDO para restaurar o banco a um estado consistente.
O controle de concorrência e a recuperação são duas faces da mesma moeda no processamento de transações. O controle de concorrência garante que transações simultâneas sejam executadas de forma isolada e consistente, enquanto a recuperação garante que, após uma falha, o banco de dados retorne a um estado consistente. A interação entre eles é tão profunda que o protocolo de gravação antecipada (write-ahead logging — WAL) exige que os registros de log sejam gravados em disco antes que as alterações nos dados sejam aplicadas, justamente para que a recuperação possa desfazer (UNDO) ou refazer (REDO) operações com segurança. Se a recuperação fosse independente do controle de concorrência, não haveria como garantir que o estado restaurado respeitasse o isolamento das transações.
Para entender a afirmação, é preciso distinguir os dois mecanismos de recuperação baseados em log:
UNDO (desfazer): usado quando uma transação não foi confirmada (não atingiu o commit) e suas alterações precisam ser revertidas, restaurando os valores anteriores (imagem antes).
REDO (refazer): usado quando uma transação foi confirmada, mas suas alterações ainda não foram gravadas no disco (imagem depois); nesse caso, as operações são reaplicadas para garantir a durabilidade.
A afirmação do enunciado diz que "o valor é recuperado a partir de informação de UNDO em um registro e no log", o que é uma visão incompleta e incorreta do processo. A recuperação baseada em log pode exigir tanto UNDO quanto REDO, dependendo do estado da transação no momento da falha. Além disso, a técnica de recuperação adotada (steal/no-steal, force/no-force) determina se UNDO ou REDO será necessário, e essa escolha está diretamente ligada ao protocolo de controle de concorrência.
A banca explora uma confusão clássica: o candidato pode achar que, como o log registra as operações, a recuperação é um processo mecânico e independente. Na verdade, o log é a ponte entre o controle de concorrência e a recuperação — ele registra as operações na ordem em que foram executadas, e é essa ordem que permite reconstruir o estado consistente. Sem o controle de concorrência, não haveria como saber quais transações estavam ativas, quais foram confirmadas e quais devem ser desfeitas ou refeitas.
NÃO CAIA NESSA!
A banca tenta fazer o candidato acreditar que recuperação e controle de concorrência são assuntos estanques. Na verdade, eles são complementares: o controle de concorrência define a ordem de execução das operações, e a recuperação usa o log (que registra essa ordem) para restaurar o banco. Além disso, a afirmação menciona apenas UNDO, ignorando o REDO — que é igualmente essencial para transações confirmadas cujas alterações não foram persistidas. Fique atento: sempre que uma questão afirmar que dois mecanismos do SGBD são "independentes", desconfie — eles quase sempre são interdependentes.
Recuperação após falha
1Relação com controle de concorrência
Não é independente
São interdependentes
Log registra ordem das operações
2Mecanismos de log
UNDO (desfazer)
Transação não confirmada
Restaura imagem antes
REDO (refazer)
Transação confirmada
Reaplica imagem depois
3Protocolo WAL
Log gravado antes dos dados
Garante segurança do UNDO/REDO
LEVEL · soulevel.com.br
Item — ❌ Errado
A afirmação está errada por dois motivos principais:
Independência falsa: O esquema de recuperação depende do esquema de controle de concorrência. O log registra as operações na ordem em que são executadas, e essa ordem é determinada pelo controle de concorrência. Para recuperar o banco após uma falha, é necessário saber quais transações estavam ativas, quais foram confirmadas e quais devem ser desfeitas ou refeitas — informações que só fazem sentido no contexto do controle de concorrência.
Visão incompleta do log: A recuperação baseada em log não se limita a UNDO. Ela também utiliza REDO para transações confirmadas cujas alterações não foram gravadas em disco. A técnica de recuperação (steal/no-steal, force/no-force) determina quando UNDO ou REDO é necessário, e essa escolha está ligada ao protocolo de recuperação adotado.
O texto do enunciado afirma que "o valor é recuperado a partir de informação de UNDO em um registro e no log", o que é uma simplificação incorreta. Na prática, o log contém tanto a imagem antes (para UNDO) quanto a imagem depois (para REDO) dos itens de dados, e o processo de recuperação decide qual ação tomar com base no estado da transação.