Na implementação do controle de concorrência na execução ...
Essa situação caracteriza-se sempre que
4 problemas de consistência (por ordem crescente de dificuldade para seu tratamento pelos níveis de isolamento nos SGBD):
Perda de atualização: duas transações que ocorrem simultaneamente atualizam o mesmo dado. Isto pode ocorrer em uma seqüência segundo a qual uma das atualizações é perdida.
Leitura Suja: leitura de dados não confirmados de uma linha existente, podendo ocasionar a leitura de uma informação nunca confirmada.
Leitura Não-Repetida: duas leituras de dados na mesma transação não se repetem. Na segunda leitura, dados não existem ou foram modificados.
Leitura Fantasma: na leitura de um conjunto de dados (função de agregação), surgem novas informações no conjunto que podem gerar um conflito. Apesar das transações não acessarem tuplas em comum, diz-se que as transações entraram em conflito em uma tupla fantasma.
Alternativa correta: C - uma transação lê dados gravados por outra transação que ainda não foi confirmada (committed).
Para entender essa questão, é crucial ter conhecimento sobre controle de concorrência em bancos de dados. O controle de concorrência garante que quando múltiplas transações estão acessando e alterando dados ao mesmo tempo, o resultado do sistema de banco de dados permanece consistente. O Dirty Read é um fenômeno indesejável que ocorre nesse contexto, onde uma transação lê dados que foram inseridos ou modificados por outra transação que ainda não completou seu ciclo de vida (ou seja, não foi committed).
A razão pela qual a alternativa C é correta, é que ela descreve exatamente a situação de um Dirty Read, onde os dados lidos por uma transação podem acabar não sendo parte do estado final do banco de dados, porque a transação que fez a alteração desses dados pode ser desfeita (rollback). Isso pode levar a decisões equivocadas, pois a leitura foi feita a partir de um estado transitório e potencialmente inválido do banco de dados.