FC ConcursosFC Concursos

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:

  1. bloqueio por inanição;
  2. bloqueio do tipo Latches;
  3. conflito causado por um registro fantasma;
  4. conflito lógico entre T1 e T2, com bloqueio do item (registro) que está sendo inserido por T1;
  5. 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

Continue aprendendo