Questão de Banco de Dados — Transações (Locks, ACID, etc.) — FUNDATEC 2025
Banco de Dados›Transações (Locks, ACID, etc.)
Código
qa698977
Banca
FUNDATEC
Órgão
SBC
Ano
2025
Cargo
POSCOMP ( )
Sobre escalonamentos de transações de banco de dados, considere que Estado Inicial é o estado do banco de dados antes da execução do escalonamento, e Estado Final é o estado do banco de dados após a execução do escalonamento. Um escalonamento não serial S de n transações é dito serializável se:
I. For equivalente em conflito a algum escalonamento serial das mesmas n transações.
II. O estado final de S for o mesmo estado final de algum dos escalonamentos seriais das mesmas n transações, com relação a pelo menos um estado inicial.
III. O estado final de S for o mesmo estado final de algum dos escalonamentos seriais das mesmas n transações, com relação a todos os estados iniciais.
Quais estão corretas?
AApenas I.
BApenas II.
CApenas III.
DApenas I e II.
EApenas I e III.
Revelar gabarito e comentário▾
GabaritoE — Apenas I e III.
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”.
Escalonamento de transações: serializabilidade
Gabarito: letra E — estão corretos os itens I e III. A serializabilidade por conflito (item I) e a serializabilidade por visão (item III) são as duas formas clássicas de definir que um escalonamento não serial é serializável; o item II está incorreto porque exige equivalência apenas para "pelo menos um estado inicial", quando a definição correta exige que o resultado seja o mesmo para todos os estados iniciais possíveis.
A serializabilidade é o critério que garante que um escalonamento concorrente de transações produza o mesmo efeito que algum escalonamento serial (execução uma após a outra, sem intercalação). Ela é a base do controle de concorrência: se um escalonamento é serializável, o SGBD pode executá-lo de forma intercalada sem comprometer a consistência do banco. Existem duas formas principais de definir essa equivalência, e é exatamente sobre elas que a questão versa.
A equivalência por conflito (item I) é a mais utilizada na prática. Duas operações estão em conflito se pertencem a transações diferentes, acessam o mesmo item de dado e pelo menos uma delas é uma escrita. Um escalonamento é equivalente por conflito a outro se a ordem relativa de todas as operações conflitantes for a mesma nos dois. Assim, um escalonamento é serializável por conflito se for equivalente por conflito a algum escalonamento serial. Esse é o critério que o algoritmo de teste de serializabilidade por conflito (baseado no grafo de precedência) verifica: se o grafo não tem ciclos, o escalonamento é serializável por conflito.
A equivalência por visão (item III) é um critério mais amplo e mais fraco. Dois escalonamentos são equivalentes por visão se, para cada item de dado, a transação que lê o valor inicial é a mesma, a transação que realiza cada escrita é a mesma, e a transação que lê o valor final (após a última escrita) é a mesma. A serializabilidade por visão exige que o escalonamento seja equivalente por visão a algum escalonamento serial. Uma propriedade importante é que todo escalonamento serializável por conflito também é serializável por visão, mas a recíproca não é verdadeira — existem escalonamentos serializáveis por visão que não são serializáveis por conflito.
A pegadinha da questão está no item II, que inverte o quantificador. A definição correta de serializabilidade por visão exige que o estado final seja o mesmo para todos os estados iniciais possíveis, não apenas para "pelo menos um". Se a equivalência valesse apenas para um estado inicial específico, o escalonamento poderia produzir resultados diferentes para outros estados iniciais, o que violaria a garantia de consistência que a serializabilidade pretende oferecer. É essa inversão sutil que torna o item II incorreto.
Guarde a distinção entre os dois critérios e o quantificador correto: conflito (ordem das operações conflitantes) e visão (resultado para todos os estados iniciais). É exatamente nessa fronteira que as alternativas se separam.
Item
Afirmação
Correto?
Justificativa
I
Equivalência em conflito a algum escalonamento serial
✅
Definição clássica de serializabilidade por conflito (grafo de precedência acíclico).
II
Estado final igual para pelo menos um estado inicial
❌
Quantificador errado: exige-se igualdade para todos os estados iniciais, não apenas um.
III
Estado final igual para todos os estados iniciais
✅
Definição correta de serializabilidade por visão.
Item I — ✅ Correto
A definição de serializabilidade por conflito está correta. Um escalonamento é serializável por conflito se for equivalente por conflito a algum escalonamento serial das mesmas transações. A equivalência por conflito exige que a ordem das operações conflitantes seja preservada, e o teste clássico é o grafo de precedência: se o grafo é acíclico, o escalonamento é serializável por conflito.
Item II — ❌ Incorreto
O erro está no quantificador "pelo menos um estado inicial". A serializabilidade por visão exige que o estado final seja o mesmo para todos os estados iniciais possíveis, não apenas para um. Se a equivalência valesse apenas para um estado inicial específico, o escalonamento poderia produzir resultados diferentes para outros estados iniciais, o que violaria a garantia de consistência. A banca trocou "todos" por "pelo menos um" — uma inversão clássica de quantificador.
Item III — ✅ Correto
A definição de serializabilidade por visão está correta. Um escalonamento é serializável por visão se for equivalente por visão a algum escalonamento serial, e a equivalência por visão exige que o estado final seja o mesmo para todos os estados iniciais possíveis. Esse é o critério mais amplo, que engloba a serializabilidade por conflito como caso particular.
NÃO CAIA NESSA!
A banca inverte o quantificador no item II: troca "todos" por "pelo menos um". Essa é uma armadilha clássica — o candidato que lê rápido aceita o item II como correto, mas a definição exige que o resultado seja o mesmo para qualquer estado inicial, não apenas para um. Fique atento a palavras como "todos", "nenhum", "pelo menos um" — elas mudam completamente o sentido da definição.
PEGA ESSA DICA!
Para memorizar a diferença: conflito = ordem das operações conflitantes (grafo de precedência); visão = resultado final para todos os estados iniciais. Se a alternativa falar em "pelo menos um estado inicial", está errada — o correto é "todos os estados iniciais".