Um administrador de banco de dados recebeu a solicitação de ...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Resposta Correta: A - Dirty Read
A questão aborda fenômenos que podem ocorrer em transações em bancos de dados, sendo relevante compreender os conceitos de isolamento de transações e os problemas que podem surgir se o isolamento não for adequadamente implementado. Para resolver tal questão, é necessário conhecer os diferentes tipos de leitura de dados que podem acontecer quando múltiplas transações interagem com os mesmos dados simultaneamente. São eles:
- Dirty Read: Ocorre quando uma transação lê dados que foram modificados por outra transação ainda não confirmada (ou seja, antes do commit). Se a transação que modificou os dados for revertida com um rollback, a primeira transação terá lido um "estado sujo" dos dados.
- Nonrepeatable Read: O fenômeno onde uma transação lê duas vezes o mesmo dado e obtém resultados diferentes porque outra transação atualizou o dado entre as duas leituras.
- Phantom Read: Semelhante ao Nonrepeatable Read, mas envolve a leitura de um conjunto de linhas que correspondem a certos critérios e, após outra transação inserir ou remover linhas desse conjunto, a leitura original se torna imprecisa.
- Serializable Write: Não é um fenômeno, mas sim um nível de isolamento que evita os problemas de leitura citados, tornando as transações totalmente isoladas umas das outras.
- WriteNeverLock: Não é um termo padrão em isolamento de transações e não tem relação com os conceitos pertinentes à questão.
No cenário descrito na questão, o administrador de banco de dados atualizou um registro e, ao perceber um erro, aplicou um rollback. Durante esse processo, um usuário conseguiu ver a atualização que ainda não havia sido confirmada, o que caracteriza uma Dirty Read, pois a leitura dos dados ocorreu antes da transação ser finalizada com um commit. Este é exatamente o cenário que a alternativa A descreve.
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
Dirty read: É quando minha conexão está lendo informações que ainda não foram comitadas, ou seja, a informação que li pode não existir ou mesmo ter sido modificada.
Nonrepeatable read: a transação que lê a informação mais de uma vez obtém a cada leitura valores diferentes (número de linhas não muda)
Phantom read: Aparecem e somem tuplas na mesma transação. (mudando número de linhas)
Nonrepeatable Read (ou Leitura não repetível) - Obtenção de valores diferentes em duas leituras de um mesmo dado numa mesma transação. Aparece no nível de isolamento READ COMMITTED e READ UNCOMMITTED.
Phanton Read (ou Leitura Fantasma) - Em duas leituras de uma tabela numa mesma transação, aparecem ou somem tuplas. Aparece no nível de isolamento REPEATABLE READ, READ COMMITTED e READ UNCOMMITTED.
O nível de isolamento SERIALIZABLE é único que não acontece nenhum destes três fenômenos. Vale lembrar também que robustez e performance de tempo são inversamente proporcionais neste cenário (portanto, serializable é o nível com pior desempenho de tempo, seguido pelo repeatable read e assim por diante).
WriteNeverLock e Serializable Write - conceitos inventados pela banca.
1. Dirty Read
2. NonRepeatable read
3. Phantom Read
EM NENHUM MOMENTO TEVE O COMMIT OU SEJA = LEITURA SUJA
'' Ao perceber o equívoco, aplicou o rollback nessa transação. ''
GABARITO A
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo