Serializability in DBMS
Serializability helps to identify which non-serial schedules are correct and will maintain the consistency of the database.
Serializable Schedules - If a given non-serial schedule of ‘n’ transactions is equivalent to some serial schedule of ‘n’ transactions, then it is called a Serializable Schedule.
There are two types of Serializability in the database as follows:
- Conflict Serializability
- View Serializability
Basic Rules for Conflict Serializability to identify Schedule is Conflict Serializable or not -
Step 1 - Identify a Conflicting Operations.
Rule 1 - At least one of the two operations is a write operation
Rule 2 - Both the operations are on the same data item
Rule 3 - Both the operations belong to different transactions
Step 2 - Draw a Precedence Graph by drawing one node for each transaction.
Step 3 - Check whether any cycle is present in the graph or not.
Step 4 - If there is no cycle found, then the schedule is Conflict Serializable otherwise NOT.
Basic Rules for View Serializability to identify Schedule is View Serializable or not -
Step 1 - Check whether the given schedule is Conflict Serializable or not.
Rule 1 - All Conflict Serializable schedules are View Serializable.
Rule 2 - But, all View Serializable schedules may or may not be conflict serializable.
Step 2 - Check if there exists any blind write operation or not.
- Rule 3 - No blind write means not a View Serializable Schedule.
Step 3 - If the below three conditions hold true then the schedule is View Serializable.
Condition 1 - Initial readers must be the same for all the data items
Condition 2 - Write-read sequence must be the same
Condition 3 - Final writers must be the same for all the data items.
Step 4 - By using the above three conditions, write all the dependencies.
Step 5 - Draw a Precedence Graph by using dependencies find in the above step 4.
Step 6 - Check whether any cycle is present in the graph or not.
Step 7 - If there is no cycle found, then the schedule is View Serializable otherwise NOT.
Let's check Serializability for each schedule S1 and S2.
1] Serializability for Schedule S1
The given schedule S1: r1(X); r2(Z); r1(Z); r3(X); r3(Y); w1(X); w3(Y); r2(Y); w2(Z); w2(Y);
Step 1 -
For a better understanding purpose represent the given schedule S1 in the transaction table format as follows:
T1 |
T2 |
T3 |
R(X) |
|
|
|
R(Z) |
|
R(Z) |
|
|
|
|
R(X) |
|
|
R(Y) |
W(X) |
|
|
|
|
W(Y) |
|
R(Y) |
|
|
W(Z) |
|
|
W(Y) |
|
Step 2 -
List all the conflicting operations and determine the dependency between the transactions.
Therefore,
Conflicting Operations |
Dependencies between the Transactions |
R1(Z), W2(Z) |
T1 → T2 |
R3(X), W1(X) |
T3 → T1 |
R3(Y), W2(Y) |
T3 → T2 |
W3(Y), W2(Y) |
T3 → T2 |
Step 3 -
Draw the Precedence Graph for schedule S1 based on the above transaction dependencies.
Therefore,
Step 4 -
Check whether any cycle is present in the graph or not.
- Clearly, there exists no cycle in the precedence graph.
- Therefore, the given schedule S1 is Conflict Serializable.
- Based on the View Serializability Rule 1 - All Conflict Serializable schedules are View Serializable.
- Therefore, the given schedule S1 is also a View Serializable.
Schedule S1 is Conflict as well as View Serializable.
Step 5 -
Now, schedule S1 is conflict/view serializable, therefore find out the equivalent serial schedule.
- All the possible topological orderings of the above precedence graph will be the possible equivalent serialized schedules.
- Therefore, the topological orderings can be found by performing the Topological Sort of the above precedence graph as follows:
After performing the topological sort,
The possible Equivalent Serialized Schedule for S1 got is T3 → T1 → T2
2] Serializability for Schedule S2
The given schedule S2: r1(X); r2(Z); r3(X); r1(Z); r2(Y); r3(Y); w1(X); w2(Z); w3(Y); w2(Y);
Step 1 -
For a better understanding purpose represent the given schedule S2 in the transaction table format as follows:
T1 |
T2 |
T3 |
R(X) |
|
|
|
R(Z) |
|
|
|
R(X) |
R(Z) |
|
|
|
R(Y) |
|
|
|
R(Y) |
W(X) |
|
|
|
W(Z) |
|
|
|
W(Y) |
|
W(Y) |
|
Step 2 -
List all the conflicting operations and determine the dependency between the transactions.
Therefore,
Conflicting Operations |
Dependencies between the Transactions |
R3(X), W1(X) |
T3 → T1 |
R1(Z), W2(Z) |
T1 → T2 |
R2(Y), W3(Y) |
T2 → T3 |
R3(Y), W2(Y) |
T3 → T2 |
W3(Y), W2(Y) |
T3 → T2 |
Step 3 -
Draw the Precedence Graph for schedule S2 based on the above transaction dependencies.
Therefore,
Step 4 -
Check whether any cycle is present in the graph or not.
- Clearly, there exists a cycle in the precedence graph.
- Therefore, the given schedule S2 is NOT Conflict Serializable.
- Since, the given schedule S2 is NOT Conflict Serializable. But, it may or may not be View Serializable according to Rule 2 for the View Serializability.
- To check whether S2 is View Serializable or not, let us use another Step 2. (Blind Writes)
Step 5 -
- Writing without reading is called as a Blind Write.
- Every write operation is performed after the read operation in each transaction.
- Therefore, there exists no blind write in the given schedule S2.
- Therefore, schedule S2 is surely not View Serializable.
Step 6 -
As the given Scheule S2 is neither Conflict Serializable nor View Serializable.
Therefore, there are No Equivalent Serialized Schedules Possible.
Answer -
1] Schedule S1 is Conflict as well as View Serializable, with Equivalent Serialized Schedule T3 → T1 → T2
2] Scheule S2 is neither Conflict Serializable nor View Serializable, therefore, No Equivalent Serialized Schedules are Possible.