Pular para o conteúdo principal

Questão de Banco de Dados — Gerência de Transações — FUNDATEC 2026

Banco de DadosGerência de Transações
Código
qg685912
Banca
FUNDATEC
Órgão
IFC-SC
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Informática: Banco de Dados
Em sistemas de banco de dados, o controle de concorrência é responsável por garantir a consistência dos dados quando múltiplas transações são executadas simultaneamente. Considere o seguinte cenário: a transação T1 detém um bloqueio exclusivo sobre o recurso R1 e solicita bloqueio sobre R2. Simultaneamente, a transação T2 detém um bloqueio exclusivo sobre R2 e solicita bloqueio sobre R1. Ambas permanecem indefinidamente em espera. Com base nesse cenário e nos conceitos de controle de concorrência, assinale a alternativa que apresenta a correta descrição do fenômeno ilustrado e sua relação com os mecanismos de gerenciamento de transações.
  1. AO cenário descreve uma situação de starvation, na qual T1 e T2 são continuamente preteridas pelo escalonador em favor de outras transações de maior prioridade, impedindo seu progresso sem que haja dependência circular entre elas.
  2. BO cenário descreve um deadlock, caracterizado pela espera circular entre transações que detêm recursos e aguardam pela liberação de recursos bloqueados por outras transações do mesmo ciclo, exigindo intervenção do SGBD para sua resolução.
  3. CO cenário descreve um problema de dirty read, no qual T1 lê dados modificados por T2 antes de sua confirmação, gerando inconsistência no resultado da transação leitora em caso de rollback posterior da transação escritora.
  4. DO cenário descreve uma violação do protocolo de bloqueio em duas fases (2PL), na qual ambas as transações adquirem novos bloqueios após já terem liberado bloqueios anteriores, caracterizando uma falha na fase de encolhimento que compromete a serialização do escalonamento.
  5. EO cenário descreve uma situação de cascading rollback, na qual o abortamento de T1 força o abortamento em cascata de T2 devido à dependência de leitura estabelecida entre elas durante a fase de execução concorrente, comprometendo a durabilidade das transações confirmadas.
Revelar gabarito e comentário

GabaritoB — O cenário descreve um deadlock, caracterizado pela espera circular entre transações que detêm recursos e aguardam pela liberação de recursos bloqueados por outras transações do mesmo ciclo, exigindo intervenção do SGBD para sua resolução.

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

Controle de Concorrência e Deadlock

Gabarito: letra B. O cenário descreve um deadlock, caracterizado pela espera circular entre transações que detêm recursos e aguardam pela liberação de recursos bloqueados por outras transações do mesmo ciclo, exigindo intervenção do SGBD para sua resolução.

A banca testa a diferença entre deadlock e outros fenômenos de concorrência, como starvation, dirty read, violação de 2PL e cascading rollback. O cenário apresentado é clássico: duas transações, cada uma segurando um recurso exclusivo e solicitando o recurso da outra, gerando um ciclo de espera.

NÃO CAIA NESSA!

A banca adora confundir deadlock com starvation. Ambos envolvem espera, mas no deadlock há um ciclo de dependência circular (T1 espera T2 e T2 espera T1), enquanto no starvation uma transação é preterida indefinidamente sem formar ciclo. A alternativa A descreve starvation, não deadlock.

PEGA ESSA DICA!

Para identificar deadlock, verifique a presença das quatro condições de Coffman: exclusão mútua, posse e espera (hold and wait), não preempção e espera circular. No cenário, todas estão presentes. Lembre-se que o deadlock é resolvido pelo SGBD via detecção e rollback de uma das transações.

Fenômeno

Descrição

Característica Principal

Relação com o Cenário

Deadlock

Espera circular entre transações que detêm recursos e aguardam pela liberação de recursos bloqueados por outras do mesmo ciclo.

Ciclo de dependência (T1 espera T2 e T2 espera T1).

Corresponde exatamente ao cenário: T1 detém R1 e solicita R2; T2 detém R2 e solicita R1.

Starvation

Transação é continuamente preterida pelo escalonador em favor de outras de maior prioridade, sem dependência circular.

Espera indefinida sem ciclo; há preterição por prioridade.

Não se aplica: não há menção a prioridades e há ciclo de espera.

Dirty Read

Leitura de dados não confirmados (não commitados) por outra transação, gerando inconsistência.

Leitura de dados sujos; depende de operações de leitura/escrita.

Não se aplica: o cenário envolve apenas bloqueios e solicitações de recursos, sem leitura de dados.

Violação de 2PL

Aquisição de novos bloqueios após já ter liberado bloqueios anteriores, comprometendo a serialização.

Fase de encolhimento (shrink) com aquisição de novos locks.

Não se aplica: o cenário não descreve liberação de bloqueios; apenas aquisição e espera.

Cascading Rollback

Abortamento de uma transação força o abortamento em cascata de outras devido a dependências de leitura.

Dependência de leitura entre transações; rollback em cadeia.

Não se aplica: não há operações de leitura ou abortamento no cenário.

  1. 1T1 detém R1, solicita R2
  2. 2T2 detém R2, solicita R1
  3. 3Espera circular (hold and wait)
  4. 4SGBD detecta e aborta vítima
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

O cenário descreve uma situação de starvation (inanição), na qual as transações são preteridas por outras de maior prioridade. Isso não ocorre aqui: não há menção a prioridades, e a espera é circular, não por preterição. Starvation não envolve dependência circular; é uma condição de espera indefinida sem progresso, mas sem que as transações estejam mutuamente bloqueadas.

Alternativa B — ✅ Correta ⟵ GABARITO

Exatamente. Deadlock é a espera circular onde cada transação detém recursos que a outra necessita. O SGBD precisa detectar e resolver, geralmente abortando uma das transações (vítima) e liberando seus recursos.

Alternativa C — ❌ Incorreta

Dirty read (leitura suja) ocorre quando uma transação lê dados ainda não confirmados (não commitados) de outra transação. Não há leitura de dados no cenário; apenas bloqueios e solicitações de recursos. Portanto, não se aplica.

Alternativa D — ❌ Incorreta

O protocolo de bloqueio em duas fases (2PL) exige que a transação adquira todos os bloqueios antes de liberar qualquer um (fase de crescimento) e só então libere (fase de encolhimento). O deadlock pode ocorrer mesmo em 2PL, mas não é uma violação do protocolo — é uma condição de concorrência que o 2PL não impede por si só. A descrição de “adquirir novos bloqueios após liberar” é uma violação do 2PL, mas no cenário as transações nunca liberam bloqueios, então não há violação desse tipo.

Alternativa E — ❌ Incorreta

Cascading rollback (rollback em cascata) ocorre quando uma transação lê dados sujos de outra que subsequentemente aborta, forçando o rollback da leitora. Não há leitura de dados aqui, e o cenário é de espera por bloqueio, não de dependência de leitura.

Gabarito: letra B.

Link permanente: /questoes/qg685912