Um usuário reclama que o banco de dados está inconsistente. ...
Abaixo, uma parte do relatório que ele executa.
(...)
(1) select idproduto, quantidade from estoque;
(...)
(2) select count(*) from estoque;
(...)
Ele verifica que, frequentemente, o select (1) retorna uma quantidade de registros diferente da contagem em (2). Como se pode explicar o que está ocorrendo e qual a solução para o problema?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: C
Para compreender essa questão, é necessário ter conhecimento sobre gerenciamento de transações e concorrência em bancos de dados. O problema levantado na questão indica que há uma discrepância entre os dados retornados por consultas diferentes que deveriam trazer informações relacionadas. Isso sugere que há outras operações alterando a tabela de estoque enquanto o relatório está sendo executado, o que é um indicativo de problemas de isolação em transações.
A alternativa C está correta porque explica que o relatório está sofrer interferência de outras transações simultâneas que modificam os dados na tabela 'estoque'. Isso significa que enquanto o relatório está sendo executado, registros podem estar sendo inseridos, atualizados ou deletados na tabela de estoque por outras transações, levando a inconsistências nos resultados. A solução proposta na alternativa C envolve bloquear a tabela durante a execução do relatório ou realizar a consulta dentro de uma transação configurada como 'somente leitura', garantindo assim que o relatório obtenha uma visão consistente dos dados independentemente das alterações que outras transações possam estar realizando no mesmo intervalo de tempo. Isso utiliza mecanismos de controle de concorrência como os locks (bloqueios) e as transações que conseguem preservar as propriedades ACID, em especial a 'Isolation' (Isolamento), essenciais para manter a integridade dos dados em um sistema de banco de dados.
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
Acho que está tendo uma Leitura não repetida
Leitura Não Repetida (Nonrepeatable Read) = Duas leituras de dados na mesma transação não se repetem. Na segunda leitura, dados não existem ou foram modificados.
eu matei assim '' Ele verifica que, frequentemente, o select retorna uma quantidade de registros diferente da contagem ''.
GAB C.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo