Skip to main content

Apa itu kontrol konkurensi?

Dalam pemrograman manajemen data, kontrol konkurensi adalah mekanisme yang dirancang untuk memastikan bahwa hasil yang akurat dihasilkan oleh operasi bersamaan.Hasil tersebut juga harus diperoleh secara tepat waktu.Kontrol konkurensi sangat sering terlihat dalam database di mana ada cache informasi yang dapat dicari untuk diperoleh pengguna.

Programmer mencoba merancang database sedemikian rupa sehingga efek transaksi penting pada data bersama akan setara secara serial.Artinya adalah bahwa data yang membuat kontak dengan set transaksi akan berada dalam keadaan tertentu di mana hasilnya dapat diperoleh jika semua transaksi dieksekusi secara serial dan dalam urutan tertentu.Kadang -kadang data itu tidak valid sebagai akibatnya dimodifikasi oleh dua transaksi, secara bersamaan.

Ada beberapa cara untuk memastikan bahwa transaksi mengeksekusi satu demi satu, termasuk penggunaan pengecualian timbal balik serta menciptakan sumber daya yang menentukan transaksi mana yang dimiliki transaksi yang dimiliki transaksi manamengakses.Namun, ini berlebihan, dan tidak akan memungkinkan seorang programmer untuk mendapatkan manfaat dari kontrol konkurensi dalam sistem terdistribusi.Kontrol konkurensi memungkinkan pelaksanaan simultan dari beberapa transaksi sambil menjauhkan transaksi ini satu sama lain, memastikan linearizability.Salah satu cara untuk mengimplementasikan kontrol konkurensi adalah penggunaan kunci eksklusif pada sumber daya tertentu untuk eksekusi transaksi serial yang berbagi sumber daya.Transaksi akan mengunci objek yang dimaksudkan untuk digunakan, dan jika beberapa transaksi lain membuat permintaan untuk objek yang dikunci, transaksi itu harus menunggu objek untuk membuka kunci.

Implementasi metode ini dalam sistem terdistribusi melibatkan manajer kunci mdash;Server yang menerbitkan kunci sumber daya.Ini sangat mirip dengan server untuk pengecualian bersama terpusat, di mana klien dapat meminta kunci dan mengirim pesan untuk pelepasan kunci pada sumber daya tertentu.Namun, pelestarian eksekusi serial masih diperlukan untuk kontrol konkurensi.Jika dua transaksi terpisah mengakses set objek yang serupa, hasilnya harus serupa dan seolah -olah transaksi ini dieksekusi dalam urutan tertentu.Untuk memastikan pemesanan akses ke sumber daya, penguncian dua fase diperkenalkan, yang berarti bahwa transaksi tidak diperbolehkan kunci baru setelah pelepasan kunci terpisah.

dalam penguncian dua fase untuk kontrol konkurensi, fase awal dianggap semakin meningkatfase, di mana transaksi memperoleh kunci yang dibutuhkan.Fase berikutnya dianggap sebagai fase menyusut, di mana transaksi memiliki kunci yang dilepaskan.Ada masalah dengan jenis penguncian ini.Jika transaksi dibatalkan, transaksi lain dapat menggunakan data dari objek yang dimodifikasi dan dibuka oleh transaksi yang dibatalkan.Ini akan mengakibatkan transaksi lain dibatalkan.