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:
Gunakan waktu pada clock system sebagai timestamp. Jadi, timestamp sebuah transaksi sama dengan clock system ketika transaksi itu memasuki sistem.
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:
W-timestamp(Q), berisi
timestamp terbesar yang
berhasil mengeksekusi perintah
write().
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:
Jika TS(Ti) <
W-timestamp(Q), maka Ti perlu membaca
data yang sekarang sudah ditulis dengan data lain. Maka,
transaksi ini akan ditolak.
Jika TS(Ti) >=
W-timestamp(Q), maka Ti akan membaca
data dan
R-timestamp(Q) akan di-set menjadi
maksimum, yaitu sesuai
timestamp Ti.
Protokol penulisan transaksi:
Jika TS(Ti) lebih kecil dari
R-timestamp(Q), maka data Q yang akan
ditulis oleh Ti diperlukan sebelumnya, sehingga dianggap
bahwa Ti tidak perlu melakukan operasi
write()(waktu eksekusi transaksi sudah
lewat) dan transaksi ini ditolak.
Jika TS(Ti) lebih kecil
W-timestamp(Q), maka transaksi Ti
melakukan operasi
write() yang hasilnya tidak diperlukan
lagi (waktu Ti melakukan eksekusi sudah lewat) sehingga
transaksi ini ditolak.
Selain dua point di atas, maka transaksi akan dilakukan
Tabel 21.3. Contoh Penjadwalan dengan PROTOKOL BERBASIS WAKTU
| T2 | T3 |
|---|---|
| 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().