← Questões de Banco de Dados

Banco de Dados · FGV · 2024

Questão comentada de Banco de Dados

O PostgreSQL, versão 15, suporta 4 níveis de isolamento de transações. Com relação níveis de isolamento e aos fenômenos que eles isolam. Em relação ao tema, assinale V para a afirmativa verdadeira e F para a falsa. ( ) O nível de isolamento leitura sem compromisso permite a ocorrência de leitura fantasma. ( ) O nível de isolamento leitura confirmada não admite leitura fantasma e anomalia de serialização. ( ) O nível de isolamento mais rigoroso é o serializável, ele não permite a ocorrência de leitura suja, leitura não repetitível, leitura fantasma e anomalia de serialização. As afirmativas são, respectivamente,

Gabarito: D

No PostgreSQL 15, os quatro níveis de isolamento são: leitura sem compromisso (read uncommitted), leitura confirmada (read committed), repetível (repeatable read) e serializável. A lógica é simples: quanto mais alto o nível, menos surpresas a transação encontra no caminho. No PostgreSQL, a leitura sem compromisso praticamente se comporta como leitura confirmada, mas ainda pode haver fenômenos como leitura fantasma, porque o banco não garante uma visão totalmente estável dos dados ao longo da transação. A leitura confirmada não é tão “certinha” quanto parece. Ela impede leitura suja, mas ainda admite leitura não repetível e leitura fantasma, além de não eliminar, por si só, a possibilidade de anomalias de serialização. Então a segunda afirmativa cai, porque ela nega justamente fenômenos que esse nível ainda pode permitir. Já o nível serializável é o mais rigoroso. A ideia é fazer as transações parecerem ter sido executadas uma por vez, em alguma ordem. Por isso, ele bloqueia leitura suja, leitura não repetível, leitura fantasma e também anomalia de serialização. É o modo “sem bagunça”, mas com custo maior de controle. Por isso o gabarito D está correto: a primeira afirmativa é verdadeira, a segunda é falsa e a terceira é verdadeira. Em prova, a FGV costuma cobrar exatamente essa diferença entre o que o padrão SQL diz e o comportamento prático do PostgreSQL, que usa MVCC e trata o nível read uncommitted de forma equivalente ao read committed.

Continue treinando

Questões relacionadas