Salah satu alternatif
concurrency control yang dapat menghilangkan deadlock adalah time stamping.
Secara umum, timestamping (TS) adalah
penanda waktu saat transaksi terjadi.
Hal ini untuk mengurutkan eksekusi transaksi agar sama dengan eksekusi
serial.
Time stamp dapat
berupa:
- waktu sistem saat transaksi dimulai, atau
- penghitung logik (logical counter) yang terus bertambah
nilainya tiap kali terjadi transaksi baru.
Jika timestamp
transaksi a lebih kecil daripada timestamp transaksi b , atau
TS(Ta) <
TS(Tb), maka transaksi a (Ta) selalu
dilaksanakan sebelum transaksi b (Tb).
Contoh:
Misal rekaman pada
basis data memuat TS 168, yang mengidentifikasikan transaksi dengn TS 168
adalah transaksi yang terkemudian yang sukses mengupdate rekaman yang
bersangkutan. Maka jika ada transaksi
dengan TS 170 mencoba mengupdate rekaman yang sama, maka update ini akan
diijinkan, karena TS yang dimiliki lebih kemudian dari TS pada
rekaman. Saat transaksi ini dilakukan,
TS pada rekaman akan diatur menjadi 170.
Sekaran, jika transaksi yang akan mengupdate rekaman tersebut memiliki
TS 165, maka update ditolak karena
TS-nya < TS di rekaman.
Selain transaksi,
item data juga memiliki nilai time stamp. Untuk setiap item data Q, ada 2 nilai
time stamp, yaitu:
a.
Read time stamp atau R-timestamp(Q), yang menunjukkan nilai
TS terbesar dari setiap transaksi yang berhasil menjalankan operasi read(Q).
b.
Write time stamp atau W-timestamp(Q), yang menunjukkan nilai
TS terbesar dari setiap transaksi yang berhasil menjalankan operasi write(Q).
Timestamp ini akan
selalu diperbarui ketika ada perintah baru read(Q) atau write(Q) yang
dijalankan.
No comments:
Post a Comment