Questão de Banco de Dados — Transações (Locks, ACID, etc.) — FUNDATEC 2025
Banco de Dados›Transaçõ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.
ATodas as assertivas estão corretas.
BTodas as assertivas estão incorretas.
CApenas as assertivas I e II estão corretas.
DApenas as assertivas I e III estão corretas.
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.