Concurrency Control
Concurrency Control
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.