Considere o ambiente de uma aplicação multiusuário que acess...

Próximas questões
Com base no mesmo assunto
Q287831 Banco de Dados
Considere o ambiente de uma aplicação multiusuário que acessa um sistema de gerência de bancos de dados relacional. Os usuários acessam a aplicação em
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

Alternativas

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