views:

2192

answers:

2

I have two transactions T and U which are executed simultaneously in a DB. How does one provide an example of the lost update problem?

We can assume that we have three accounts A,B,C and they each have £100,£200 and £300 respectively.

+2  A: 

The "lost update" problem relates to concurrent reads and updates to data, in a system where readers do not block writers. It is not necessary for the transactions to be exactly simultaneous.

  1. Session #1 reads Account A, gets 100.
  2. Session #2 reads Account A, gets 100.
  3. Session #2 updates Account A to 150 (+50) and commits.
  4. Session #1 updates Account A to 120 (+20) and commits.

In this scenario, because Session #1 does not know that another session has already modified the account, the update by Session #2 is overwritten ("lost").

There are several ways to solve this, e.g. version numbers or before-and-after compares.

Jeffrey Kemp
A: 

(3) Update Account A to 150 Where Account is 100 -> Account A is now 150

(4) Update Account A to 120 Where Account is 100 -> Update fail because account A is 150 and not 100

Steen A