Outro tipo de problema é a atualização temporária (ou leitura suja). Esse problema ocorre quando uma transação atualiza um item do banco de dados e depois a transação falha por algum motivo. Nesse meio tempo, o item atualizado é acessado (lido) por outra transação, antes de ser alterado de volta para seu valor original.

Vejamos um exemplo:

Tempo Operação UM Operação DOIS
1 Iniciar transação.
2 Ler valor de X no banco.
3 Sistema retorna 10.
4 Calcular X + 5 = 15. Iniciar transação.
5 Gravar 15 no banco. Ler valor de X no banco.
6 Ler valor Y no banco. Sistema retorna 15.
7 Erro de leitura. Calcular X + 5 = 20.
8 Desfazer transação. X volta a ser 10. Gravar 20 no banco.
9 Erro, pois o valor original de X não é mais 15, mas sim, 10.

O exemplo acima ilustra a operação UM sobre o item X que então falha antes de terminar, de modo que o sistema deve mudar o valor de X de volta para seu valor original. Contudo, antes que ele possa fazer isso, a operação DOIS lê o valor temporário de X, que não será gravado permanentemente no banco de dados devido à falha da operação UM.

O valor do item X que foi lido pela operação DOIS é chamado de dado sujo, pois foi criado por uma transação que não foi concluída nem confirmada; portanto, a transação DOIS deve ser cancelada. Esse problema também é conhecido como problema de leitura suja.

Copyright © 2016 AIEC.