Anda di halaman 1dari 1

Please explain about:

1) Concurrency Control
2) Three General Techniques for Handling Deadlock

1
Concurrency control adalah proses me-manage banyak operasi/transaksi yang terjadi
di database secara bersamaan agar tidak saling mengganggu dan menyebabkan konflik
sehingga tidak terjadi proses yang salah walaupun transaksi-transaksi tersebut
valid. Jika tidak ada concurrency control akan terjadi banyak konflik seperti lost
update problem, uncommitted dependency problem, dan inconsistent analysis problem.

2
Timeout
Transaksi yang merequest lock baik read lock maupun write lock akan hanya menunggu
untuk beberapa waktu, waktu ini sudah ditentukan sebelumnya di dalam sistem. Jika
waktu telah habis dan request lock tersebut masih harus menunggu maka akan terjadi
request timeout dan transaksi dibatalkan. Hal ini merupakan solusi yang mudah namun
bisa menyebabkan transaksi terkena timeout walaupun bukan karena deadlock, sehingga
menghasilkan false positive.

Deadlock prevention
Sistem melihat transaksi yang ingin di eksekusi sebelum dilakukan, jika transaksi
ini akan menyebabkan sebuah deadlock terjadi maka transaksi tersebut akan di-hold
dahulu. Agar sebuah transaksi menunggu sampai kondisi menyatakan tidak akan terjadi
deadlock ketika eksekusi, hal ini dilakukan dengan pemberian timestamps untuk
setiap transaksi. Sistem timestamp ini dapat dibagi menjadi 2:
wait-die yaitu transaksi yang dilakukan terlebih dahulu akan menunggu untuk
transaksi yang baru, jika tidak maka transaksi akan dibatalkan lalu diulang, dalam
arti lain transaksi yang lebih baru yang mendapat prioritas.
wound-wait yaitu transaksi yang dilakukan terlebih dahulu akan mendapat prioritas
terhadap lock yang direquest oleh transaksi yang lebih baru dan transaksi yang
lebih baru dibatalkan.

Deadlock detection and recovery


Sistem memperbolehkan sebuah deadlock terjadi namun langsung mendeteksinya dan
menghancurkan deadlock tersebut. Deteksi deadlock dilakukan dengan menggambar
sebuah grafik wait-for yang menunjukan dependency antar transaksi, transaksi x
sedang menunggu transaksi apa, dst.
Graph ini akan diupdate terus menerus dengan sebuah interval, setiap terjadi
transaksi akan tercipta node baru, dan setiap ada transaksi yang harus menunggu
sebuah lock akan tercipta edge baru.
Graph ini juga terus menerus dicek apakah memiliki sebuah cycle, jika iya maka
cycle tersebut adalah deadlock-nya dan kita bisa memulai membatalkan transaksi-
transaksi.

Anda mungkin juga menyukai