Questão nº 71
Questão de Tecnologia da Informação · FGV TJ-AP 2024 (nº 71)
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:
- Abloqueio por inanição;
- Bbloqueio do tipo Latches;
- Cconflito causado por um registro fantasma; (alternativa correta)
- Dconflito lógico entre T1 e T2, com bloqueio do item (registro) que está sendo inserido por T1;
- Edeadlock que pode ser prevenido pelo esquema esperar-morrer (wait-die).
Resposta comentada
Gabarito Alternativa C
Um registro fantasma (phantom record) é um tipo de anomalia em bancos de dados onde uma transação executa a mesma consulta duas vezes e, entre as execuções, outra transação insere ou exclui registros que afetam o conjunto de resultados da consulta, fazendo com que a segunda execução retorne um conjunto de dados diferente.
- (A) Incorreta: Inanição (starvation) ocorre quando uma transação é continuamente impedida de acessar um recurso, nunca conseguindo progredir, o que não é o caso descrito.
- (B) Incorreta: Latches são bloqueios internos de baixo nível usados pelo sistema de banco de dados para proteger estruturas de memória e não se referem à visibilidade de dados entre transações.
- (C) Correta: A situação descrita é um cenário clássico para a ocorrência de um registro fantasma. T2 não enxerga o registro que T1 está inserindo porque T1 ainda não confirmou (commit). Se T1 confirmar e T2 refizer a mesma leitura, T2 verá um novo registro que não estava lá antes, caracterizando um "registro fantasma" que apareceu no conjunto de resultados.
- (D) Incorreta: Embora T1 tenha um bloqueio exclusivo sobre o registro que está inserindo, o foco da questão para T2, que está lendo todos os registros, é a inconsistência no conjunto de dados que pode surgir. A armadilha é focar no bloqueio individual do item (que existe), em vez da anomalia de conjunto de dados (registro fantasma) que a situação propicia. O problema não é que T2 está bloqueado de ler, mas que sua visão do conjunto de dados está incompleta e pode mudar.
- (E) Incorreta: Deadlock é um impasse onde transações ficam esperando umas pelas outras em um ciclo, o que não é o que o cenário descreve. O esquema wait-die é uma forma de preveni-lo.
Fonte: FGV TJ-AP 2024 Analista Judiciário - TI - Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.