Um SGBD que não possui um controle de concorrência efetivo ...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - Leitura Suja.
O tema da questão aborda um tópico muito importante em Bancos de Dados relacionado à concorrência, que é o processo de gerenciamento de vários acessos simultâneos ao mesmo banco de dados. Quando falamos em concorrência, estamos preocupados com o controle de interações entre transações concorrentes, garantindo a integridade e a consistência dos dados.
No cenário apresentado, temos duas transações, T1 e T2, atuando sobre o mesmo registro. T1 atualiza o registro, mas antes que possa ser confirmada (commit), ocorre uma falha e a transação é desfeita (rollback). Se T2 leu o valor atualizado por T1 e prosseguiu com suas operações baseando-se nesse valor que não é mais válido, temos o que é chamado de Leitura Suja (Dirty Read). Isso ocorre porque T2 leu dados que não foram confirmados e que, posteriormente, foram descartados devido ao fracasso da transação T1.
A Leitura Suja é problemática porque uma transação acaba usando dados que podem não existir mais, o que pode levar a decisões equivocadas ou a uma cadeia de erros e inconsistências nos dados do banco. Para evitar esse tipo de problema, os SGBDs implementam mecanismos de controle de concorrência como bloqueios (locks) e timestamps, que ajudam a garantir a consistência dos dados mesmo em ambientes com muitas transações ocorrendo simultaneamente.
Para entender e resolver essa questão, é necessário conhecer os fenômenos que podem ocorrer na ausência de um controle de concorrência adequado e saber como cada um desses fenômenos afeta a integridade dos dados. Esse conhecimento é fundamental tanto para o uso quanto para a administração de SGBDs em ambientes que exigem alta confiabilidade e consistência.
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: LETRA E
Problema da atualização temporária (ou leitura suja): ocorre quando uma transação atualiza um item no banco de dados e depois a transação falha por algum motivo. Nesse meio tempo, o item atualizado é acessado por outra transação, antes de ser alterado de volta para o seu valor original.
Problema de resumo incorreto: se uma transação está calculando uma função de resumo de agregação em uma série de itens de banco de dados, enquanto outras transações estão atualizando alguns desses itens, a função de agregação pode calcular alguns valores antes que eles sejam atualizados e outros, depois que eles foram atualizados.
Problema de atualização perdida: ocorre quando duas transações que acessam os mesmos itens do banco de dados tem suas operações intercaladas de modo que isso torna o valor de alguns itens do banco de dados incorreto.
Alternativa: E
Leitura fantasma:
A transação executa uma segunda vez uma consulta que retorna um conjunto de linhas que satisfazem uma determinada condição de procura, e descobre que o conjunto de linhas que satisfazem a condição é diferente por causa de uma outra transação efetivada recentemente.
Leitura Suja:
A transação lê dados escritos por uma transação simultânea não efetivada (uncommitted)
fonte:
http://pgdocptbr.sourceforge.net/pg80/transaction-iso.html
A e B SÃO LEITURA FANTASMA = Se uma transação está calculando uma função de resumo de agregação em uma série de itens de banco de dados, enquanto outras transações estão atualizando alguns desses itens, a função de agregação pode calcular alguns valores antes que eles sejam atualizados e outros, depois que eles forem atualizados.
C é Impasse
D = Quando Duas Transações ATUALIZAM o mesmo dado, Duas transações ACESSAM os mesmos dados do BD têm suas operações INTERCALADAS tornando o valor de alguns itens incorretos, SOBRESCRITA de DADOS ALTERADOS sem COMMIT.
T1 ATUALIZOU e FALHOU ou SEJA COMMIT FALHO, e nesse meio tempo T2 utilizou esse mesmo registro.
GABARITO E
- Leitura Suja/Inválida/Atualização Temporária/Dependência sem COMMIT (DIRTY-READ) = Esse problema ocorre quando UMA TRANSAÇÃO ATUALIZA um item do banco de dados e depois a TRANSAÇÃO FALHA (SEM COMMIT) por algum motivo. Nesse meio-tempo, o ITEM ATUALIZADO É ACESSADO (LIDO) POR OUTRA TRANSAÇÃO, ANTES DE SER ALTERADO PARA SEU VALOR ORIGINAL.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo