Optimistic Concurrency Control
Is locking the only way to stop concurrency related problems? There exist some other ways too. One such way is known as an Optimistic Concurrency control.
The basic logic in optimistic concurrency control is to permit the concurrent transactions to update the data items supposing that the concurrency related trouble will not occur. Though, we require to reconfirm our view in the validation phase. Thus, the optimistic concurrency control algorithm has the following phases:
a) READ Phase: In a read phase, transaction T reads the data items from the database into its private workspace. All the updates of the transaction can only alter the local copies of the data in the private workspace.
b) VALIDATE Phase: Checking is performed to verify whether the read values have changed during the time transaction was updating the local values. This is performed by evaluating the current database values to the values that were read in the private workspace. In case, the values have altered the local copies are thrown away and the transaction aborts.
c) WRITE Phase: In a write phase, if validation phase is successful the transaction is committed and updates are applied to the database, otherwise the transaction is rolled back.