Pular para o conteúdo principal

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

Banco de DadosGerência de Transações
Código
qg475062
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2025
Nível
Superior
Cargo
Analista em Computação/Ênfase em Suporte em Banco de Dados
Sobre o fenômeno de leitura fantasma (phantom read), assinale a alternativa correta considerando o PostgreSQL 14.
  1. AÉ prevenido nos níveis Repeatable Read e Serializable.
  2. BOcorre quando a mesma linha retorna valores distintos em leituras repetidas dentro de uma transação, mesmo sem inserção ou remoção de linhas.
  3. CPode ocorrer no nível Serializable.
  4. DNão pode ocorrer no nível Read Uncommitted.
  5. ENão pode ocorrer no nível Read Committed.
Revelar gabarito e comentário

GabaritoA — É prevenido nos níveis Repeatable Read e Serializable.

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

Leitura fantasma (phantom read) no PostgreSQL 14

Gabarito: letra A. No PostgreSQL 14, os níveis de isolamento Repeatable Read e Serializable previnem o fenômeno de leitura fantasma (phantom read). Isso ocorre porque o Repeatable Read no PostgreSQL é implementado com snapshot isolation, que garante que uma transação veja um snapshot consistente do banco desde o início, bloqueando inserções que afetariam o conjunto de resultados. Já os níveis Read Uncommitted e Read Committed permitem a ocorrência de phantom reads.

Níveis de isolamento (PostgreSQL 14)
  • 1Previnem phantom read
    • Repeatable Read
    • Serializable
  • 2Permitem phantom read
    • Read Uncommitted
    • Read Committed
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

No PostgreSQL 14, tanto Repeatable Read quanto Serializable previnem phantom reads. O Repeatable Read usa snapshot isolation, eliminando a possibilidade de linhas fantasmas. O Serializable, além disso, também previne anomalias de serialização.

Alternativa B — ❌ Incorreta

A descrição apresentada refere-se ao fenômeno de leitura não repetível (non-repeatable read), que ocorre quando a mesma linha é lida duas vezes e obtém valores diferentes. Na leitura fantasma, o conjunto de linhas que satisfaz uma condição muda entre leituras (inserção ou remoção de linhas), não os valores de uma linha específica.

Alternativa C — ❌ Incorreta

No nível Serializable, o mais alto de isolamento, todos os fenômenos de concorrência (dirty read, non-repeatable read e phantom read) são prevenidos. Portanto, phantom read não pode ocorrer nesse nível.

Alternativa D — ❌ Incorreta

Read Uncommitted é o nível mais baixo, que permite todos os fenômenos, inclusive dirty reads. Logo, phantom read pode ocorrer nesse nível.

Alternativa E — ❌ Incorreta

Read Committed previne dirty reads, mas permite non-repeatable reads e phantom reads. Assim, phantom read pode ocorrer no nível Read Committed.

NÃO CAIA NESSA!

No PostgreSQL, diferentemente do padrão SQL, o Repeatable Read já previne phantom reads. Grave: enquanto no padrão SQL o Repeatable Read permite phantom, no PostgreSQL ele os bloqueia. Essa é uma pegadinha clássica!

Nível de isolamento

Previne phantom read? (PostgreSQL 14)

Read Uncommitted

Não

Read Committed

Não

Repeatable Read

Sim

Serializable

Sim

Gabarito: letra A.

Link permanente: /questoes/qg475062