Dieses Problem basiert auf der Verwendung von unbestätigten, veränderten Daten und diese müssen Änderungen zurückgenommen werden.
Transaktion A Zeit Transaktion B
- -
- t1 ändere Satz R
|
lese Satz R t2 -
|
- t3 Rollback
- -
Lösung mittels Locking:
Transaktion A Zeit Transaktion B
- -
- t1
| ändere Satz R
(meldet X-Lock auf Satz an)
|
lese Satz R
(möchte S-Lock auf Satz R) t2
| -
|
wartet auf Freigabe von Satz R durch B t3
| Rollback; Synchpoint; Ende Transaktion
(gibt Satz R wieder frei)
|
lese Satz R
(meldet S-Lock auf Satz R an) t4
| -
- -
Dadurch, daß die Transaktion A auf die Freigabe des von der Transaktion B gesperrten Datensatzes R wartet, kann sie zu keinem Zeitpunkt (sowohl bei einem Lesen als auch beim Verändern von Datensätzen) mit falschen Daten rechnen.
|