**Timestamp Ordering With Examples**

As we already know, there are two rules for timestamp order. In this lecture, we will see an example of a time stamp ordering protocol.

**Rule No. 01** is used when any transaction wants to perform a **Read(A)** operation

- If WTS(A) > TS (Ti), then Ti Rollback
- Else (otherwise) execute R(A) operation and
**SET**RTS (A) = MAX {RTS(A), TS(Ti)}

**Rules No.2** rules are used when a transaction needs to perform **WRITE (A)**

- If RTS(A) > TS (Ti), then Ti Rollback
- If WTS(A) > TS (Ti), then Ti Rollback
- Else (otherwise) execute W(A) operation and
**SET**WTS (A) = TS(Ti)

Where **“A”** is some data

**Example of Timestamp Ordering Protocol**

**Let’s Explain with an ****Example; look**** at the following table**

**Solution:**

**Draw the following table**

** **

In the above table, A, B, and C are data values. And Read and Write timestamp values are given “0”. As in the example table, time0 to time7 are given. Let’s discuss it one by one.

At time 1,transaction 1 wants to perform a read operation on data “A.” then, according toRule No 01,

- WTS(A) > TS(T1) = 0>100 // condition false
- Go to else part and
**SET**RTS (A) = MAX {RTS(A), TS(T1)} So, - RTS (A) = MAX{0,100}= 100.
- So, finally RTS(A) is updated with 100

The updated table will appear as follows,

At time 2,transaction 2 wants to perform a read operation on data“B.”then, according toRule No 01,

- WTS(B) > TS(T2) = 0>200 // condition false
- Go to else part and
**SET**RTS (B) = MAX {RTS(B), TS(T2)} So, - RTS (B) = MAX{0,200} = 200.
- So, finally RTS(B) is updated with 200

The updated table will appear as follows,

At time 3,transaction 1 wants to perform a write operation on data“C.”then, according toRule No 02,

- RTS(C) > TS(T1) = 0>100 // condition false
- Go to second condition, WTS(C) > TS(T1) = 0>100 // again condition false
- Go to the else part and
**SET**WTS (C) = TS(T1) So, - WTS (C) = TS(T1) = 100.
- So, finally WTS(C) is updated with 100

The updated table will appear as follows,

** **

At time 4,transaction 3 wants to perform a read operation on data“B.”then, according toRule No 01,

- WTS(B) > TS(T3) = 0>300 // condition false
- Go to else part and
**SET**RTS (B) = MAX {RTS(B), TS(T3)} So, - RTS (B) = MAX{200,300} = 300.
- So, finally, RTS(B) replaced 200 and updated it with 300.

The updated table will appear as follows,

** **

At time 5,the transaction T1 wants to perform a read operation ondata “C”Then according toRule No. 01,

- WTS(C) > TS(T1) = 100>100 // condition false
- Go to else part and
**SET**RTS (C) = MAX {RTS(C), TS(T1)} So, - RTS (A) = MAX{0,100}= 100.
- So, finally RTS(C) is updated with 100

The updated table will appear as follows,

At time 6,transaction 2 wants to perform a write operation on data“B.”then, according toRule No 02,

- RTS(B) > TS(T2) = 300>200 // condition True

**According to Rule 2,** if the condition is true, then Rollback T2.

When T2 rolls, it never resumes. It will restart with a new timestamp value. Keep in mind that T2 restarts after completion of all running transactions, so in this example, T2 will restart after completion of T3.

It happens due to conflict where the older transaction (T2) wants to perform a write operation on data “B,” but the younger transaction (T3) has already Read the same data “B”

The table will remain the same

** **

At time 7,transaction 3 wants to perform a write operation on data“A”Then according toRule No 02,

- RTS(A) > TS(T3) = 100>300 // condition false
- Go to second condition, WTS(A) > TS(T3) = 100>300 // again condition false
- Go to the else part and
**SET**WTS (A) = TS(T3) So, - WTS (A) = 300.
- So, finally WTS(A) is updated with 300

An updated table will appear as follows,