In a database management system (DBMS), a serializable schedule is a way of executing concurrent transactions in a way that produces the same result as if the transactions were executed serially (one after the other). In other words, a serializable schedule ensures that the concurrent execution of transactions preserves the integrity of the database, as if the transactions were executed one at a time.
A serializable schedule is achieved through the use of locks, which are used to prevent multiple transactions from accessing and modifying the same data simultaneously. When a transaction acquires a lock on a piece of data, no other transaction can access or modify that data until the lock is released. This ensures that the transactions are executed in a serial fashion, even though they are running concurrently.
Here is an example of how a serializable schedule might work in a DBMS:
| Time Step | Transaction 1 (T1) | Transaction 2 (T2) | Lock Manager / Database State |
|---|---|---|---|
| t1 | Request & Acquire Lock(D) | — | Lock Granted to T1 |
| t2 | — | Request Lock(D) | Lock Denied (Data D held by T1) |
| t3 | — | BLOCKED / WAITING | T2 queued for Data D |
| t4 | Complete & Release Lock(D) | — | Lock on D Released |
| t5 | — | Acquire Lock(D) & Begin Execution | Lock Granted to T2 |
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.


