![]() 31
phase,
transaksi
akan
mendapatkan semua
lock
yang
dibutuhkan tapi
tidak
dapat
melepaskan lock
apapun.
Pada
shrinking
phase,
transaksi
akan
melepaskan
semua
lock
yang
dipegang
tapi
tidak
bisa
mendapatkan
lock
baru
lainnya.
Tidak ada kebutuhan bahwa semua lock
didapatkan sekaligus
pada
suatu
waktu. Secara
normal, sebuah transaksi akan
mendapatkan lock
untuk
menjalankan
operasi,
dan
meminta
lock
tambahan
jika
ada
operasi
yang membutuhkan lock pada operasi selanjutnya .
Aturan-aturannya adalah sebagai berikut :
Sebuah
transaksi
harus
mendapatkan
sebuah
lock
pada
item
sebelum
beroperasi pada item tersebut. Lock tersebut bisa berupa akses membaca
atau menulis, tergantung dari tipe akses yang dibutuhkan.
Ketika
transaksi
melepaskan
sebuah
lock,
transaksi
tersebut
tidak
akan
pernah mendapatkan lock baru lainnya.
Berikut
akan
dibahas
bagaimana
two-phase
locking
digunakan
untuk
memecahkan tiga
masalah
concurrency
yang
telah
dibahas
sebelumnya.
2.4.3.1 Mencegah Masalah Lost Update Menggunakan 2PL
Time
T1
T2
bal
x
t1
begin_transaction
100
t2
begin_transaction
write_lock(bal
x
)
100
t3
write_lock(bal
x
)
read(bal
x
)
100
|