Conflicting Operations in Schedule:
The three simple ways of interleaved instruction implement of transactions T1 and T2. Please note that in the following tables the first column describes the sequence of instructions that are getting implemented that is the schedule of operations.
a) T2 is implemented completely before T1 starts, then sum X+Y will show the correct assets
Schedule
|
Transaction T1
|
Transaction T2
|
Example
Values
|
Read X
|
|
Read X
|
X = 50000
|
Read Y
|
|
Read Y
|
Y= 100000
|
Display X+Y
|
|
Display X+Y
|
150000
|
Read X
|
Read X
|
|
X = 50000
|
Subtract 100
|
Subtract 100
|
|
49900
|
Write X
|
Write X
|
|
X = 49900
|
Read Y
|
Read Y
|
|
Y= 100000
|
Add 100
|
Add 100
|
|
100100
|
Write Y
|
Write Y
|
|
Y= 100100
|
b) T1 is implemented completely before T2 starts, then sum X+Y will still show the correct assets:
Schedule
|
Transaction T1
|
Transaction T2
|
Example
Values
|
Read X
|
Read X
|
|
X = 50000
|
Subtract 100
|
Subtract 100
|
|
49900
|
Write X
|
Write X
|
|
X = 49900
|
Read Y
|
Read Y
|
|
Y= 100000
|
Add 100
|
Add 100
|
|
100100
|
Write Y
|
Write Y
|
|
Y= 100100
|
Read X
|
|
Read X
|
X = 49900
|
Read Y
|
|
Read Y
|
Y= 100100
|
Display X+Y
|
|
Display X+Y
|
150000
|
c) Block A in transaction T1 is implemented, followed by complete execution of T2, followed by the Block B of T1.
Schedule
|
Transaction T1
|
Transaction T2
|
Example
Values
|
Read X
|
Read X
|
|
X = 50000
|
Subtract 100
|
Subtract 100
|
|
49900
|
Write X
|
Write X
|
|
X = 49900
|
Read X
|
|
Read X
|
X = 49900
|
Read Y
|
|
Read Y
|
Y= 100000
|
Display X+Y
|
|
Display X+Y
|
149900
|
Read Y
|
Read Y
|
|
Y= 100000
|
Add 100
|
Add 100
|
|
100100
|
Write Y
|
Write Y
|
|
Y= 100100
|
In this implement an incorrect value is being displayed. This is because Rs.100 although deleted from X, has not been put in Y, and is therefore missing. Obviously, if T1 had been written in a different way, starting with block B and following up with block A, even then such an interleaving would have given a dissimilar but incorrect result.
Please note that for the given transaction there are many more ways of this interleaved instruction implement.
Therefore, there may be a problem when the transactions T1 and T2 are allowed to implementation in parallel. Let us define the problems of concurrent implementation of transaction more precisely.
Let us suppose the following transactions (assuming there will not be errors in data while implementation of transactions)
Transaction T3 and T4: T3 reads the balance of account X and subtracts a withdrawal amount of Rs. 5000, while T4 reads the balance of account X and adds an amount of Rs. 3000
T3 T4
READ X READ X
SUB 5000 ADD 3000
WRITE X WRITE X