37
exclusive
lock
pada
item
bal
y
.
Karena
T1
8
sedang
mengunci bal
y
,
maka
transaksi
T1
7
akan
menunggu.
Sementara itu,
pada
saat
t
7
,
T1
8
meminta
sebuah
exclusive
lock
pada
item
bal
x
yang
sedang
dipegang
oleh
transaksi
T
17
.
Tidak
ada
satupun
transaksi
yang
dapat
dilanjutkan karena
masing-
masing sedang
menunggu lock
yang tidak dapat dipenuhi sampai transaksi
lainnya
selesai.
DBMS
harus
dapat
mengetahui adanya
deadlock
dan
mengatasinya dalam beberapa cara.
Hanya
ada
satu
cara
untuk
menghancurkan
deadlock,
yaitu
abort
satu atau
lebih
transaksi.
Dengan melakukan abort sebuah transaksi, proses
harus
melakukan undo
terhadap
semua
perubahan
yang
dilakukan
oleh
transaksi
tersebut.
Pada
contoh
yang
ditunjukkan dalam
tabel
2.11,
proses
abort dapat dilakukan pada transaksi
T
18
. Setelah abort
transaksi
T
18
selesai,
semua
lock
yang
dipegang
oleh
transaksi
T1
8
akan
dilepaskan
dan
dapat digunakan oleh transaksi
T1
7
. Langkah berikutnya, DBMS akan
secara otomatis
melakukan restart
terhadap
transaksi
yang telah dibatalkan
tersebut.
Ada
tiga
teknik
umum
yang
biasa
digunakan untuk
menangani
deadlock,
yaitu timeout,
deadlock
prevention
dan deadlock
detection
and
recovery.
Dengan
timeout,
transaksi yang
meminta lock
akan
menunggu
selama
satu
periode
waktu
tertentu.
Dengan
menggunakan deadlock
prevention, DBMS akan
melihat apakah
suatu
transaksi akan menyebabkan
deadlock,
dan
tidak
akan
mengizinkan deadlock
terjadi.
Dengan
menggunakan deadlock
detection
and
recovery,
DBMS
mengizinkan
deadlock
terjadi
namun
mengetahui
kejadian
deadlock,
lalu
memecahkan
|