Scenario 1: This code is to demonstrate a mutex for serialized access to a single DB in a distributed system
Environment: Single database named 'A' with tables named x,y and z
Transaction 1
Begin;
Read(x,y,z); //mutex readlock on x,y,z
Write (x,y,z); //mutex writelock on x,y,z
End;
// mutex read-write unlock
Transaction 2
Begin;
Read(x); //mutex readlock on x
Write (y,z); //mutex writelock on y,z
End;
// mutex read-write unlock
In Scenario 1, Transaction2 has to wait till the Transaction 1 to unlock\release the lock to read x and write to y and z
Scenario 2: This code is to demonstrate a mutex for serialized access to a distributed DB in a distributed system
Environment: Distributed databases named 'A','B','C' with tables named A(x1, y1, z1), B(x2, y2, z2) and C(x3, y3, z3)
Transaction 1
Begin;
Read(x); //mutex readlock on A(x1), B(x2), C(x3)
Write (y); //mutex writelock on A(y1), B(y2), C(y3)
End;
// mutex read-write unlock
Transaction 2
Begin;
Read(x,y,z); //mutex readlock on A(x1,y1,z1),B(x2,y2,z2),C(x3,y3,z3)
Write (z); //mutex writelock on A(z1), B(z2),C(z3)
End;
// mutex read-write unlock
Transaction 3
Begin;
Read(z); //mutex readlock on A(z1),B(z2),C(z3)
Write (x); //mutex writelock on A(x1),B(x2),C(x3)
End;
// mutex read-write unlock
In Scenario 2,
Transaction 2 has to wait till the Transaction 1 to unlock\release the lock to read x,y,z and write to z
Transaction 3 has to wait till the Transaction 2 to unlock\release the lock to read z and write to x