Uma transação SQL executa operações que modificam o banco de...
I. A opção default do SET TRANSACTION, para o nível de isolamento, é READ COMMITED, que garante que a transação não lerá dados de transações que não foram finalizadas. II. Ao definir o nível de isolamento como REPEATABLE READ, a transação será executada em completo isolamento, portanto não lerá dados de transações que não foram finalizadas com sucesso e, somente depois que ela terminar com sucesso, os dados que está alterando poderão ser acessados por outras transações. III. A opção READ UNCOMMITED permite que a transação leia dados de transações ativas que ainda não foram efetivados.
Quais estão corretas?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - Apenas III.
Para resolver esta questão, é necessário conhecer os diferentes níveis de isolamento em SQL e o que cada um deles significa em termos de visibilidade das transações e do tratamento de concorrência. Estes níveis são importantes para controlar como e quando as alterações feitas por uma transação tornam-se visíveis para outras transações e para prevenir fenômenos indesejados como "dirty reads", "non-repeatable reads", e "phantom reads".
A opção READ UNCOMMITTED permite que uma transação leia dados que foram inseridos, atualizados ou excluídos por outra transação mas que ainda não foram confirmados (commit). Isso pode levar a fenômenos conhecidos como "dirty reads", onde uma transação lê dados que podem ser descartados se a outra transação for revertida (rollback).
A assertiva III está correta porque descreve exatamente o comportamento do nível de isolamento READ UNCOMMITTED: a permissão para ler dados que ainda não foram confirmados por transações que estão em andamento. Essa é uma opção que pode ser útil em situações onde o desempenho é mais crítico do que a precisão dos dados lidos, mas deve ser utilizada com cautela devido aos riscos associados.
A assertiva I está incorreta porque embora READ COMMITTED seja frequentemente a configuração padrão, isso não é uma regra do SQL e pode variar dependendo do sistema de gerenciamento de banco de dados.
A assertiva II está incorreta porque o nível REPEATABLE READ garante que se uma transação lê uma linha, nenhuma outra transação pode modificar essa linha até que a primeira transação seja concluída. No entanto, isso não resulta em um "completo isolamento"; por exemplo, ainda podem ocorrer "phantom reads", onde novas linhas adicionadas por outras transações tornam-se visíveis. O isolamento completo é garantido pelo nível SERIALIZABLE.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Gabarito C
I) Read Commited, lê dados que ja foram commitados
II) Completo isolamento = Serializable
III) Correto
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo