Two-phase locking is a concurrency control technique used in database management systems (DBMS) to ensure the serializability of transactions. Serializability is the property that ensures that the concurrent execution of transactions produces the same result as if the transactions were executed one at a time.
Two-phase locking is based on the idea of acquiring locks on data items before reading or modifying them, and releasing locks after the data has been read or modified. There are two phases in the two-phase locking protocol:
- Growing phase: During this phase, a transaction can acquire locks on data items, but cannot release any locks.
- Shrinking phase: During this phase, a transaction can release locks, but cannot acquire any new locks.

To Make It More Clear:
Here is an example of how two-phase locking works:
Simply,
- Transaction 1 begins and acquires a lock on data item D1.
- Transaction 2 begins and tries to acquire a lock on D1, but is blocked because Transaction 1 has a lock on D1.
- Transaction 1 releases its lock on D1 and acquires a lock on D2.
- Transaction 2 acquires the lock on D1 and begins executing.
In this example, Transaction 2 is executed after Transaction 1, even though they were running concurrently. This ensures that the integrity of the database is preserved as if the transactions were executed one at a time.
Here is an algorithm for two-phase locking:
Simple Way (Easy for non-technical Students to Understand)
Algorithm for two-phase locking – Technical One (Works for IT Related Courses)
BEGIN_TRANSACTION (T);
SET_STATE (T, “GROWING”);
FOR EACH data_item X REQUIRED BY T:
ACQUIRE_LOCK (T, X);
END FOR;
// Execution & Peak Lock Point
EXECUTE_OPERATIONS (T);
// Phase 2: Shrinking Phase
SET_STATE (T, “SHRINKING”);
FOR EACH lock L HELD BY T:
RELEASE_LOCK (T, L);
END FOR;
COMMIT_TRANSACTION (T);
Two-phase locking is a simple and effective concurrency control technique, but it can suffer from performance issues due to lock contention (when multiple transactions are trying to acquire the same lock).
Happy Learning!
– DataSagar


