Protokol Berbasis Waktu

Pada protokol penguncian, transaksi-transaksi yang mengalami konflik ditangani dengan mengatur transaksi yang lebih dulu melakukan penguncian dan juga mode penguncian yang digunakan. Protokol berbasis waktu merupakan cara lain untuk melakukan pengaturan transaksi agar sifat serializable penjadwalan tetap terjaga.

Pada protokol ini, setiap transaksi diberikan sebuah timestamp yang unik yang diberi nama TS(Ti). Timestamp ini diberikan sebelum transaksi Ti melakukan eksekusi. Bila Ti telah diberikan timestamp, maka bila ada transaksi lain Tj yang kemudian datang dan diberikan timestamp yang unik pula, akan berlaku TS(Ti) < TS(Tj). Ada dua metode yang digunakan untuk melakukan protokol ini:

  1. Gunakan waktu pada clock system sebagai timestamp. Jadi, timestamp sebuah transaksi sama dengan clock system ketika transaksi itu memasuki sistem.

  2. Gunakan sebuah counter sebagai sebuah timestamp. Jadi, timestamp sebuah transaksi sama dengan nilai counter ketika transaksi mulai memasuki sistem.

Timestamp dari transaksi-transaksi akan membuat sifat serializable tetap terjaga. Bila TS(Ti) < TS(Tj), maka Ti akan dilakukan terlebih dahulu, baru kemudian Tj dilakukan. Setiap data item yang akan diakses akan memiliki dua nilai timestamp:

  1. W-timestamp(Q), berisi timestamp terbesar yang berhasil mengeksekusi perintah write().

  2. R-timestamp(Q), berisi timestamp terbesar yang berhasil mengeksekusi perintah read().

Timestamp yang ada akan terus diperbaharui kapan saja instruksi read(Q) atau write(Q) dieksekusi. Berdasarkan protokol berbasis waktu, semua konflik yang ada antara read dan write akan dieksekusi berdasarkan urutan timestamp tiap instruksi.

Protokol pembacaan transaksi:

Protokol penulisan transaksi:

Tabel 21.3. Contoh Penjadwalan dengan PROTOKOL BERBASIS WAKTU

T2T3
Read (B) 
 Read (B)
 Write (B)
Read (A) 
 Read (A)
 Write (A)
 Read (B)
 Write (B)

Protokol berbasis waktu juga membantu dalam mengatasi deadlock, karena tidak ada transaksi-transaksi yang melakukan wait().