Figure 19.1 Interleaved processing versus parallel processing of concurrent transactions. A A B B C D CPU 1 CPU 2 t 1 t 2 t 3 t 4
Figure 19.2 Two sample transactions. (a) Transaction. (b) Transaction. (a) (b) read_item (Y ); write_item (Y );
Figure 19.3 Some problems that occur when concurrent execution is uncontrolled. (a) The lost update problem. (b) The temporary update problem. (a) Item has an incorrect value because its update by is "lost" (overwritten) write_item(y ); (b) read_item(); Transaction fails and must change the value of back to its old value; meanwhile has read the "temporary" incorrect value of.
Figure 19.3 Some problems that occur when concurrent execution is uncontrolled. (c) The incorrect summary problem. (c) T 3 sum:=0; read_item(a); sum:=sum+a; sum:=sum+; read_item(y); sum:=sum+y; T 3 reads after N is subtracted and reads Y before N is added; a wrong summary is the result (off by N). read_item(y); write_item(y);
Figure 19.4 State transition diagram illustrating the states for transaction execution. READ, WRITE BEGIN TRANSACTION ACTIVE END TRANSACTION PARTIALLY COMMITTED COMMIT COMMITTED ABORT ABORT FAILED TERMINATED
Figure 19.5 Examples of serial and nonserial schedules involving transactions and. (a) Serial schedule A: followed by. (b) Serial schedule B: followed by. (c) Two nonserial schedules C and D with interleaving of operations. (a) (b) write_item(y ); write_item(y ); Schedule A Schedule B (c) write_item(y ); write_item(y ); Schedule C Schedule D
Figure 19.6 Two schedules that are result equivalent for the initial value of = 100 but are not result equivalent in general. S 1 S 2 :=+10; := * 1.1;
Figure 19.7 Constructing the precedence graphs for schedules A to D from Figure 19.5 to test for conflict serializability. (a) Precedence graph for serial schedule A. (b) Precedence graph for serial schedule B. (c) Precedence graph for schedule C (not serializable). (d) Precedence graph for schedule D (serializable, equivalent to schedule A). (a) (b) (c) (d)
(a) (b) (c) transaction transaction transaction transaction transaction T 3 write_item (Z ); transaction transaction transaction T 3 write_item (); Schedule E Schedule F write_item (Z ); transaction T 3 write_item (Z ); Figure 19.8 Another example of serializability testing. (a) The READ and WRITE operations of three transactions,, and T 3. (b) Schedule E. (c) Schedule F.
Figure 19.8 Another example of serializability testing. (d) Precedence graph for schedule E. (e) Precedence graph for schedule F. (f) Precedence graph with two equivalent serial schedules. (d) Y Equivalent serial schedules None Y Y, Z Reason cycle ( ), Y( ) cycle ( ), YZ ( T 3 ), Y(T 3 ) T 3 (e),y Equivalent serial schedules T 3 Y Y, Z T 3 (f) Equivalent serial schedules T 3 T 3 T 3