Concurrency Control
Concurrency Control
But before knowing about concurrency control, we should know about concurrent execution.
For example:
Consider the below diagram where two transactions T X and TY, are performed on the
same account A where the balance of account A is $300.
o At time t1, transaction TX reads the value of account A, i.e., $300 (only read).
o At time t2, transaction TX deducts $50 from account A that becomes $250 (only
deducted and not updated/write).
o Alternately, at time t3, transaction T Y reads the value of account A that will be $300
only because TX didn't update the value yet.
o At time t4, transaction TY adds $100 to account A that becomes $400 (only added but
not updated/write).
o At time t6, transaction TX writes the value of account A that will be updated as $250
only, as TY didn't update the value yet.
o Similarly, at time t7, transaction T Y writes the values of account A, so it will write as
done at time t4 that will be $400. It means the value written by T X is lost, i.e., $250 is
lost.
For example:
Consider two transactions, TX and TY, performing the read/write operations on account
A, having an available balance = $300. The diagram is shown below:
o At time t1, transaction TX reads the value from account A, i.e., $300.
o At time t2, transaction TY reads the value from account A, i.e., $300.
o At time t3, transaction TY updates the value of account A by adding $100 to the
available balance, and then it becomes $400.
o At time t4, transaction TY writes the updated value, i.e., $400.
o After that, at time t5, transaction T X reads the available value of account A, and that
will be read as $400.
o It means that within the same transaction T X, it reads two different values of account
A, i.e., $ 300 initially, and after updation made by transaction T Y, it reads $400. It is
an unrepeatable read and is therefore known as the Unrepeatable read problem.
Thus, in order to maintain consistency in the database and avoid such problems that take
place in concurrent execution, management is needed, and that is where the concept of
Concurrency Control comes into role.
Account A = 300 W – W Conflict lost Update Problem
Time Tx Ty
T1 READ (A) - //300 -
T2 A=A-50 //250 -
T3 - READ(A) // 300
T4 - A=A+50 // 350
T5 - -
T6 WRITE (A) 250 -
T7 - WRITE(A) // 350
Time Tx Ty
T1 READ(A) // 300 -
T2 A=A+50; //350 -
T3 WRITE (A) // 350 -
T4 - READ(A) // 300
T5 SERVER DOWN
ROLLBACK // 300 -
Time Tx Ty
T1 READ(A) // 300 -
T2 - READ(A) // 300
T3 - A=A+50 // 350
T4 - WRITE(A) //350
T5 READ(A) //300 -