Pular para o conteúdo principal

Questão de Banco de Dados — Concorrência em Banco de Dados — FUNDATEC 2025

Banco de DadosConcorrência em Banco de Dados
Código
qg475058
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2025
Nível
Superior
Cargo
Analista em Computação/Ênfase em Suporte em Banco de Dados
Durante o funcionamento de um banco de dados Microsoft SQL Server 2019, a seguinte sequência de eventos pode acontecer:• Uma transação T1 adquire uma trava compartilhada (shared lock) na linha 1.• Uma transação T2 adquire uma trava compartilhada na linha 2.• A transação T1 tenta adquirir uma trava exclusiva (exclusive lock) na linha 2, ficando bloqueada até que a transação T2 libere a trava na linha 2.• A transação T2 tenta adquirir uma trava exclusiva na linha 1, ficando bloqueada esperando que a transação T1 libere a trava na linha 1.Sobre esse contexto, analise as assertivas a seguir:I. O sistema é capaz de detectar essa situação automaticamente, e pode resolvê-la escolhendo uma das transações para terminar com um erro.II. Situações semelhantes podem acontecer entre mais do que duas transações ao mesmo tempo.III. Se todas as transações acessarem objetos na mesma ordem, situações semelhantes são menos prováveis de acontecer.Quais estão corretas?
  1. AApenas I.
  2. BApenas II.
  3. CApenas I e II.
  4. DApenas II e III.
  5. EI, II e III.
Revelar gabarito e comentário

GabaritoE — I, II 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”.

Concorrência em Banco de Dados – Deadlock no SQL Server

Gabarito: letra E (I, II e III). O cenário descrito é um deadlock clássico: transações em espera circular por recursos bloqueados. O SQL Server possui um mecanismo automático de detecção de deadlock que escolhe uma transação vítima para abortar e liberar os bloqueios (assertiva I). Deadlocks podem envolver mais de duas transações formando ciclos maiores (assertiva II). A ordenação consistente dos acessos a objetos reduz a probabilidade de deadlock, pois evita a formação de ciclos (assertiva III).

Item I — ✅ Correto

O SQL Server (e a maioria dos SGBDs relacionais) possui um monitor de deadlock que periodicamente verifica se há ciclos de espera. Ao detectar um deadlock, ele seleciona uma das transações como vítima (geralmente a de menor custo de rollback) e a aborta, liberando os bloqueios para que as demais prossigam. Isso é feito automaticamente, gerando um erro para a transação vítima (erro 1205 no SQL Server).

Item II — ✅ Correto

Deadlocks não se limitam a duas transações. É possível que três ou mais transações formem um ciclo de espera. Por exemplo: T1 bloqueia recurso A, T2 bloqueia recurso B, T3 bloqueia recurso C, e depois T1 espera por B, T2 espera por C, T3 espera por A. O mecanismo de detecção resolve da mesma forma.

Item III — ✅ Correto

Uma das principais estratégias para prevenir deadlocks é estabelecer uma ordem global de acesso aos recursos. Se todas as transações acessarem os objetos na mesma sequência (por exemplo, sempre linha1 antes da linha2), a espera circular não pode ocorrer, pois cada transação solicitará os bloqueios na mesma ordem, eliminando a possibilidade de ciclo. Embora deadlocks ainda possam ocorrer por outros motivos (como bloqueios de intervalo ou locks de intenção), a ordenação reduz significativamente sua probabilidade.

Conclusão: Todas as três assertivas estão corretas. Portanto, o gabarito é a letra E (I, II e III).

Link permanente: /questoes/qg475058