Considere o ambiente de uma aplicação multiusuário que acess...
simultâneo, submetendo transações concorrentes ao banco de dados. Todas as transações realizadas na base de dados, pela referida aplicação, estão definidas com o nível de isolamento READ COMMITTED (leitura com efetivação).
O usuário João está executando, através da aplicação, uma transação T1, composta por vários comandos SQL. Neste caso, é correto afirmar que
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Vamos analisar a questão sobre o nível de isolamento READ COMMITTED, essencial em ambientes de banco de dados multiusuário.
Tema central da questão: A questão foca no nível de isolamento das transações em um banco de dados, especialmente o nível READ COMMITTED. Este nível permite leituras apenas de dados já confirmados, evitando leituras sujas, mas não evita leituras não repetíveis ou fenômenos de linhas fantasmas.
Resumo teórico: Em bancos de dados, o nível de isolamento define o grau de visibilidade das transações ao longo do tempo. Existem quatro níveis de isolamento principais: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ e SERIALIZABLE. Cada um controla de maneira diferente a visibilidade e a consistência dos dados durante operações concorrentes. O READ COMMITTED é o nível padrão em muitos sistemas e é configurado para evitar leituras de dados que não foram confirmados.
Fonte relevante: A teoria dos níveis de isolamento é bem documentada no padrão SQL ANSI/ISO, que define como gerenciar a concorrência em transações de banco de dados.
Justificativa da alternativa correta: A alternativa A é correta: "O nível de isolamento adotado não irá impedir o aparecimento de linhas fantasmas (phantom) durante a execução de T1." Linhas fantasmas ocorrem quando uma transação repete uma consulta e encontra novas linhas inseridas por outra transação após a consulta inicial. No nível READ COMMITTED, essas linhas podem surgir porque não há bloqueio de intervalo (range locking) que impeça a inserção de novas linhas.
Análise das alternativas incorretas:
B - Incorreta. No nível READ COMMITTED, as atualizações feitas por João em T1 não são visíveis para outras transações até que ele realize um COMMIT.
C - Incorreta. Se João abortar T1, todas as alterações feitas são revertidas. A transação é desfeita, e o banco de dados retorna ao estado inicial antes de T1.
D - Incorreta. A serialização é garantida apenas no nível SERIALIZABLE, não em READ COMMITTED. Este último pode permitir concorrência, mas não garante seriação total.
E - Incorreta. Vários usuários podem executar comandos simultaneamente no banco de dados. O nível READ COMMITTED não bloqueia o acesso de outros usuários, apenas controla a visibilidade de transações não confirmadas.
Espero que esta análise tenha sido útil para sua compreensão! Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo