Transactions that Read “Dirty” Data
(1) LOCK A
(2) READ A
(3) A:=A-1
(4) WRITE A
(5) LOCK B
(6) UNLOCK A
(7) LOCK A
(8) READ A
(9) A:=A*2
(10) READ B
(11) WRITE A
(12) COMMIT
(13) UNLOCK A
(14) B:=B/A
T1 T2
Assume that T1 fails after (13).
1. T1 still holds lock on B.
2. Value read by T2 at step (8) is wrong.
T2 must be rolled back and
restarted.
3. Some transaction T3 may have read value of A between steps (13) and (14)
Previous slide
Next slide
Back to first slide
View graphic version