Pular para o conteúdo principal

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

Banco de DadosTransações (Locks, ACID, etc.)
Código
qa698978
Banca
FUNDATEC
Órgão
SBC
Ano
2025
Cargo
POSCOMP ( )

Seja cache os buffers da memória principal mantidos pelo SGBD, o processo de recuperação após falha em geral aplica regras que determinam quando uma página do banco de dados pode ser gravada do cache para a memória secundária. Algumas dessas regras são: steal, no-steal, force e no-force. Sobre o tema, analise as assertivas abaixo e assinale a alternativa correta.

 

I. A regra force determina que todas as páginas atualizadas por uma transação são imediatamente gravadas em memória secundária antes que a transação confirme.

 

II. Na regra no-force, uma página atualizada por uma transação já confirmada pode ainda estar em cache quando outra transação necessitar atualizá-la.

 

III. Na regra no-steal, operações do tipo UNDO nunca serão necessárias durante o processo de recuperação.


  1. ATodas as assertivas estão corretas.
  2. BTodas as assertivas estão incorretas.
  3. CApenas as assertivas I e II estão corretas.
  4. DApenas as assertivas I e III estão corretas.
  5. EApenas as assertivas II e III estão corretas.
Revelar gabarito e comentário

GabaritoA — Todas as assertivas estão corretas.

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

Regras de recuperação de transações: steal, no-steal, force e no-force

Gabarito: letra A. As três assertivas estão corretas: a regra force exige que as páginas atualizadas sejam gravadas em memória secundária antes do commit; a regra no-force permite que uma página atualizada por transação confirmada permaneça em cache; e a regra no-steal impede que páginas de transações não confirmadas sejam gravadas, tornando o UNDO desnecessário. Esses conceitos são fundamentais para entender como o SGBD garante a durabilidade e a atomicidade das transações.

O processo de recuperação de falhas em um SGBD depende de duas decisões de projeto: quando uma página modificada pode ser gravada do cache para o disco e se uma página não confirmada pode ser gravada. Essas decisões são capturadas por quatro regras combináveis: force e no-force (quando gravar) e steal e no-steal (o que pode ser gravado).

A regra force determina que todas as páginas atualizadas por uma transação sejam gravadas em memória secundária antes que a transação confirme (commit). Isso garante que, após o commit, os dados já estejam persistentes, simplificando a recuperação — não é necessário refazer (REDO) as operações de transações confirmadas, pois elas já estão no disco. A regra no-force, por outro lado, permite que as páginas atualizadas permaneçam em cache mesmo após o commit, sendo gravadas posteriormente. Isso melhora o desempenho (menos I/O no momento do commit), mas exige que o log registre as operações para que, em caso de falha, o REDO possa ser aplicado.

A regra steal permite que uma página modificada por uma transação não confirmada seja gravada em disco antes do commit. Isso é comum em sistemas com cache limitado, mas exige que o log registre os valores antigos para permitir o UNDO (desfazer) em caso de rollback. A regra no-steal proíbe essa gravação antecipada: páginas de transações não confirmadas nunca são gravadas em disco. Como consequência, se a transação falhar, não há nada para desfazer — o UNDO nunca é necessário. A combinação no-force + steal é a mais comum em SGBDs modernos (como PostgreSQL e Oracle), pois equilibra desempenho e complexidade de recuperação.

A pegadinha desta questão está em associar corretamente cada regra à sua consequência na recuperação. O candidato pode confundir no-steal com no-force, ou achar que no-steal exige REDO em vez de eliminar o UNDO. A assertiva III é a mais delicada: como o no-steal impede a gravação de páginas não confirmadas, não há efeitos parciais no disco para desfazer — logo, o UNDO é desnecessário. Já a assertiva II explora a consequência do no-force: a página pode continuar em cache e ser atualizada por outra transação, o que é permitido.

Guarde a distinção central: force/no-force decide o momento da gravação em relação ao commit; steal/no-steal decide se páginas não confirmadas podem ser gravadas. É exatamente essa fronteira que as assertivas testam.

Regra

Momento da Gravação

Pode Gravar Página Não Confirmada?

Consequência na Recuperação

Force

Antes do commit

REDO desnecessário para transações confirmadas

No-force

Após o commit (pode permanecer em cache)

Exige REDO via log

Steal

Sim

Exige UNDO via log

No-steal

Não

UNDO nunca necessário

Regras de recuperação
  • 1Quando gravar
    • Force
      • grava antes do commit
      • dispensa REDO
    • No-force
      • grava após o commit
      • exige REDO
  • 2O que pode gravar
    • Steal
      • grava página não confirmada
      • exige UNDO
    • No-steal
      • não grava página não confirmada
      • dispensa UNDO
LEVEL · soulevel.com.br

Assertiva I — ✅ Correta

A regra force determina que todas as páginas atualizadas por uma transação sejam gravadas em memória secundária antes do commit. Isso garante que, ao confirmar, os dados já estejam persistentes, simplificando a recuperação (não é necessário REDO para transações confirmadas). A assertiva está correta ao afirmar que a gravação ocorre "imediatamente" antes da confirmação.

Assertiva II — ✅ Correta

Na regra no-force, as páginas atualizadas por uma transação confirmada podem permanecer em cache, sendo gravadas em disco posteriormente. Isso significa que outra transação pode atualizar a mesma página enquanto ela ainda está em cache, o que é permitido. A assertiva está correta ao descrever essa possibilidade.

Assertiva III — ✅ Correta

Na regra no-steal, páginas de transações não confirmadas nunca são gravadas em disco. Se a transação falhar, não há efeitos parciais no disco para desfazer — portanto, operações de UNDO nunca são necessárias. A assertiva está correta ao afirmar essa consequência.

Gabarito: letra A — todas as assertivas estão corretas.

Link permanente: /questoes/qa698978