![]() 32
t
4
WAIT
bal
x
=
bal
x
+
100
100
t
5
WAIT
write(bal
x
)
200
t
6
WAIT
commit / unlock(bal
x
)
200
t
7
read(bal
x
)
200
t
8
bal
x
=
bal
x
10
200
t
9
write(bal
x
)
190
t
10
commit / unlock(bal
x
)
190
Tabel 2. 8
Mencegah masalah lost update menggunakan 2PL
Sumber : Connoly, 2005, p590
Penjelasan :
Solusi
pada
masalah
lost
update
ditunjukkan pada
tabel
2.8.
Untuk
mencegah
masalah
lost
update
terjadi,
pertama
kali
T2 meminta
dan
mendapatkan
sebuah
exclusive
lock
pada
bal
x
.
Dengan
demikian
T2 dapat
membaca nilai
dari
bal
x
,
menambah nilainya
dengan
100,
dan
menuliskan
nilai
tersebut
ke
dalam database.
Ketika
T1
mulai
dijalankan,
T1
juga
akan
meminta sebuah exclusive
lock
pada bal
x
.
Karena exclusive
lock
untuk bal
x
sedang digunakan oleh T2, maka permintaan ini
tidak
langsung disetujui.
T1
harus
menunggu
sampai
lock
pada bal
x
yang digunakan oleh
T2
dilepaskan
yang
artinya
T1
harus
menunggu
sampai
T2
menyelesaikan semua
operasinya.
|