A execução concorrente de transações deve ser controlada de forma que não ocorrem anomalias de transação. Considere o seguinte cenário: Em um instante 3 a transação T1 alterou o dado X mudando seu valor de 300 para 200. Em um instante 4 a transação T2 leu o valor de X obtendo 200. Em um instante 5 a transação T1 fez commit. Podemos afirmar que estamos diante da anomalia de processamento de transações concorrentes denominada:
Questão
A execução concorrente de transações deve ser controlada de forma que não ocorrem anomalias de transação. Considere o seguinte cenário:
Em um instante 3 a transação T1 alterou o dado X mudando seu valor de 300 para 200. Em um instante 4 a transação T2 leu o valor de X obtendo 200. Em um instante 5 a transação T1 fez commit.
Podemos afirmar que estamos diante da anomalia de processamento de transações concorrentes denominada:
Alternativas
A) Problema da Atualização Perdida.
B) Problema da Atualização Temporária ou Leitura suja (Dirty Read).
C) Problema da Leitura que não pode ser repetida (Nonrepeatable Read).
D) Problema da Leitura fantasma (Phantom Read).
E) Problema do Resumo Incorreto.
Explicação
Vamos analisar a linha do tempo:
-
Instante 3: a transação T1 altera X de 300 para 200. Nesse momento, a alteração ainda não está confirmada, pois não houve commit.
-
Instante 4: a transação T2 faz uma leitura de X e obtém 200. Ou seja, T2 leu um valor produzido por T1 antes de T1 confirmar (commit).
-
Instante 5: a transação T1 faz commit.
O ponto central é que T2 leu um dado que estava “sujo”, isto é, um valor ainda não confirmado no momento da leitura (instante 4). Mesmo que depois T1 tenha confirmado no instante 5, a anomalia caracterizada é a possibilidade de leitura de dados não confirmados, conhecida como Dirty Read (Leitura suja), também chamada de atualização temporária.
- Não é atualização perdida: não houve duas escritas concorrentes em X com uma sobrescrevendo a outra.
- Não é leitura não repetível: isso exigiria T2 ler X duas vezes e obter valores diferentes.
- Não é phantom read: envolve mudanças no conjunto de linhas retornado por uma consulta.
- Não é resumo incorreto: envolve agregações (sum, count etc.) inconsistentes.
Alternativa correta: (B).