Questão nº 69
Questão de Análise de Sistemas · CESGRANRIO BNDES 01/2024 (nº 69)
No contexto de um Sistema Gerenciador de Banco de Dados (SGBD), é possível definir o nível de isolamento de uma transação por meio do comando `SET TRANSACTION ISOLATION LEVEL`. Há vários níveis de isolamento possíveis.
Entre tais níveis encontra-se o `SERIALIZABLE`, que
- Aconfigura o SGBD para modo de leitura de todas as suas tabelas.
- Bdefine que apenas uma transação será executada por vez pelo SGBD.
- Cgarante o mais alto nível possível de isolamento de uma transação. (alternativa correta)
- Dpermite a serialização de objetos JSON em uma transação.
- Eprepara uma transação W para enviar dados a outra transação Y.
Resposta comentada
Gabarito Alternativa C
Conceito-chave: O nível de isolamento de uma transação define o quanto ela "enxerga" das alterações feitas por outras transações concorrentes. O SERIALIZABLE é o nível mais forte: ele garante que o resultado final da execução concorrente seja idêntico ao de uma execução sequencial (uma transação após a outra), eliminando todos os fenômenos de concorrência (leitura suja, leitura não repetível e fantasma).
- (A) Incorreta: Isolamento não tem relação com modo de leitura de tabelas;
SERIALIZABLEpermite leitura e escrita, apenas serializa a execução concorrente. - (B) Incorreta: Ele não impede a execução simultânea de transações; apenas simula um resultado como se fossem executadas em série, usando bloqueios ou versionamento.
- (C) Correta: É o nível mais alto de isolamento, prevenindo todos os fenômenos de concorrência (dirty read, non-repeatable read e phantom read), garantindo consistência total.
- (D) Incorreta: "Serialização" aqui se refere à ordem de execução de transações, não à serialização de objetos JSON (formato de dados).
- (E) Incorreta: Não há "preparação" de transação para enviar dados a outra; isso não existe no padrão SQL de isolamento.
Armadilha da banca (B): A pegadinha mais tentadora é a letra B, pois o nome "serializable" sugere "apenas uma transação por vez". Mas isso é falso: o SGBD não executa transações em fila; ele as executa concorrentemente, mas com mecanismos (como bloqueios ou MVCC) que garantem que o resultado final seja equivalente a uma execução serial. A banca explora exatamente essa confusão entre "execução serial" (resultado) e "execução sequencial" (processo).
Fonte: CESGRANRIO BNDES 01/2024 Analista - Análise de Sistemas (Desenvolvimento) (Caderno Prova 3). Reproduzida para fins de estudo.