Questão FC369537
No contexto de transações em banco de dados, a transação T1 está inserindo um novo registro na tabela TB_JUIZ. Enquanto isso, a transação T2 está lendo todos os registros de TB_JUI
Sistema de Gerenciamento de Banco de Dados (SGBD)
FGV · 2024
No contexto de transações em banco de dados, a transação T1 está inserindo um novo registro na tabela TB_JUIZ. Enquanto isso, a transação T2 está lendo todos os registros de TB_JUIZ para gerar uma listagem.
Considere que:
- T1 iniciou antes de T2;
- T1 ainda não concluiu; e
- T2 não enxerga o registro que está sendo inserido por T1.
A situação apresentada acima representa um:
- bloqueio por inanição;
- bloqueio do tipo Latches;
- conflito causado por um registro fantasma;
- conflito lógico entre T1 e T2, com bloqueio do item (registro) que está sendo inserido por T1;
- deadlock que pode ser prevenido pelo esquema esperar-morrer (wait-die).
Mostrar resposta e comentário
Gabarito
Certo
Comentário do professor
A situação descrita caracteriza um conflito causado por um registro fantasma: T1 criou um novo registro em TB_JUIZ, ainda não fez commit, e T2, que iniciou depois, não visualiza essa inserção ao ler a tabela.
Isso acontece por conta do nível de isolamento adotado pelo SGBD: mudanças não confirmadas por uma transação ficam invisíveis para outras, portanto a listagem feita por T2 não inclui o registro "fantasma" criado por T1.
Na prática, o fenômeno é relevante quando uma leitura por faixa ou por predicado encontra um conjunto diferente de tuplas dependendo do momento; para evitar fantasmas utiliza‑se isolamento mais forte (por exemplo, Serializable) ou mecanismos como locks predicados ou controle por versões que garantam visibilidade consistente entre transações.
Conteúdo do catálogo FC Concursos · Atualizado em