Pular para o conteúdo principal

Questão de Banco de Dados — Recuperação de Dados em SGBDs — CESPE / CEBRASPE 2023

Banco de DadosRecuperaçã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.

  1. CCerto
  2. 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:

  1. 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.

  1. 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.

Gabarito: Errado.

Link permanente: /questoes/ce398073