Bei diesem Problem arbeitet ein Programm mit Daten, die aus einer kurzfristig inkonsistenten Datenbank kommen.
Transaktion A Zeit Transaktion B
- -
lies Konto1
Kontostand = 40 t1
| -
|
- t2
| ändere Konto2
Kontostand = 50 + 30 = 80
|
- t3
| ändere Konto1
Kontostand = 40 - 30 = 10
|
lies Konto2
Kontostand = 80 t4
| -
- -
Lösungsversuch mittels Locking:
Transaktion A Zeit Transaktion B
- -
lies Konto1
(meldet S-Lock auf Konto1 an) t1
| -
|
- t2
| ändere Konto2
(meldet X-Lock auf Konto2 an)
|
- t3
| ändere Konto1
(meldet X-Lock auf Konto1 an)
|
lies Konto2
(möchte S-Lock auf Konto2) t4
| wartet auf Freigabe von Konto1 durch A
|
wartet auf Freigabe von Konto2 durch B t5 wartet auf Freigabe von Konto1 durch A
- -
Auch hier tritt wieder das Problem des Deadlocks auf.
|