2.3 - Por que o controle de concorrência é necessário?

Vários problemas podem acontecer quando transações simultâneas são executadas de uma maneira descontrolada. Ilustramos alguns desses problemas ao nos referirmos a um sistema bancário de controle de conta corrente.

O exemplo a seguir apresenta duas operações bancárias acontecendo simultaneamente, uma, de um depósito bancário de R$100,00 e outra, de um pagamento de R$ 80,00.

Tempo Operação UM (depósito) Operação DOIS (pagamento)
1 Ler saldo atual. Ler saldo atual.
2 Sistema retorna R$ 1.000,00. Sistema retorna R$ 1.000,00.
3 Processando o depósito: calcula saldo atual = saldo atual + R$ 100,00; saldo atual = R$ 1.100,00. Processando o pagamento: calcula saldo atual = saldo atual – R$ 80,00; saldo atual – R$ 920,00.
4 Armazena R$ 1.100 como saldo atual no banco. Armazena R$ 920,00 como saldo atual do banco.
5 Erro, pois o saldo atual real deveria ser R$ 1.020,00.

Perceba que a segunda operação invalida a primeira e vice-versa, pois o saldo atual da segunda operação não pode mais ser considerado como o valor atual.

Esse problema ocorre quando duas transações que acessam os mesmos itens do banco de dados têm suas operações intercaladas de modo que isso torna o valor de alguns itens do banco de dados incorreto. Esse tipo de problema é denominado problema da atualização perdida.
Copyright © 2016 AIEC.