Um administrador de banco de dados recebeu a solicitação de ...

Próximas questões
Com base no mesmo assunto
Q75414 Banco de Dados
Um administrador de banco de dados recebeu a solicitação de atualizar, no sistema de controle de estoque, o nome de um produto. De acordo com esse pedido, ele deveria alterar, diretamente no banco de dados, o valor do campo nome em uma única linha de uma tabela. No entanto, ele errou ao colocar o nome solicitado no update. Ao perceber o equívoco, aplicou o rollback nessa transação. Nesse período, um usuário reclamou que, ao realizar uma consulta no sistema, esse produto apareceu com o nome errado. Considerando-se que o erro percebido pelo usuário foi o mesmo introduzido pelo administrador, que fenômeno ocorreu nessa situação?
Alternativas

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)

Dirty Read (ou Leitura Suja) - Leitura de dados não comitados. Aparece somente no nível de isolamento READ UNCOMMITTED.

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 COMMITTEDREAD 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 READREAD 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.




Foi usado como nível de isolamento desta transação Read Uncommitted, que é o nível de isolamente menos restritivo e não adqure qualquer tipo de lock, logo pode acontecer os seguintes fenomenos indesejados:
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