Apa itu Kontrol Konkurensi?
Kontrol Konkurensi dalam Sistem Manajemen Basis Data adalah prosedur untuk mengelola operasi secara bersamaan tanpa saling bertentangan. Ini memastikan bahwa transaksi Database dilakukan secara bersamaan dan akurat untuk menghasilkan hasil yang benar tanpa melanggar integritas data dari masing-masing Database.
Akses bersamaan cukup mudah jika semua pengguna hanya membaca data. Tidak mungkin mereka dapat mengganggu satu sama lain. Meskipun untuk setiap Database praktis, ia akan memiliki campuran operasi BACA dan TULIS dan karenanya konkurensi merupakan sebuah tantangan.
DBMS Concurrency Control digunakan untuk mengatasi konflik tersebut, yang sebagian besar terjadi dengan sistem multi-pengguna. Oleh karena itu, Kontrol Konkurensi adalah elemen terpenting untuk berfungsinya Sistem Manajemen Basis Data di mana dua atau lebih transaksi basis data dijalankan secara bersamaan, yang memerlukan akses ke data yang sama.
Dalam tutorial ini, Anda akan belajar
- Apa itu Kontrol Konkurensi?
- Potensi masalah Concurrency
- Mengapa menggunakan metode Concurrency?
- Protokol Kontrol Konkurensi
- Protokol Berbasis Kunci
- Protokol Penguncian Dua Fase (2PL)
- Protokol berbasis stempel waktu
- Protokol Berbasis Validasi
- Karakteristik Protokol Konkurensi yang Baik
Potensi masalah Concurrency
Berikut, beberapa masalah yang mungkin akan Anda hadapi saat menggunakan metode Kontrol Konkurensi DBMS:
- Pembaruan Hilang terjadi ketika beberapa transaksi memilih baris yang sama dan memperbarui baris berdasarkan nilai yang dipilih
- Masalah ketergantungan tidak terikat terjadi ketika transaksi kedua memilih baris yang diperbarui oleh transaksi lain ( baca kotor )
- Non-Repeatable Read terjadi ketika transaksi kedua mencoba mengakses baris yang sama beberapa kali dan membaca data yang berbeda setiap kali.
- Masalah Ringkasan yang salah terjadi ketika satu transaksi mengambil ringkasan atas nilai semua contoh item data berulang, dan transaksi kedua memperbarui beberapa contoh item data tertentu. Dalam situasi tersebut, ringkasan yang dihasilkan tidak mencerminkan hasil yang benar.
Mengapa menggunakan metode Concurrency?
Alasan menggunakan metode kontrol Concurrency adalah DBMS:
- Untuk menerapkan Isolasi melalui pengecualian timbal balik antara transaksi yang bertentangan
- Untuk menyelesaikan masalah konflik baca-tulis dan tulis-tulis
- Untuk menjaga konsistensi database dengan terus menjaga penghalang eksekusi
- Sistem perlu mengontrol interaksi di antara transaksi bersamaan. Kontrol ini dicapai dengan menggunakan skema kontrol bersamaan.
- Kontrol konkurensi membantu memastikan kemampuan bersambung
Contoh
Asumsikan bahwa dua orang yang pergi ke kios elektronik pada waktu yang sama untuk membeli tiket film untuk film yang sama dan waktu pertunjukan yang sama.
Namun, hanya ada satu kursi tersisa untuk pemutaran film di teater tersebut. Tanpa kontrol konkurensi di DBMS, kedua penonton bioskop kemungkinan akan membeli tiket. Namun, metode kontrol konkurensi tidak mengizinkan hal ini terjadi. Kedua penonton bioskop masih bisa mengakses informasi yang tertulis di database tempat duduk film. Tetapi kontrol konkurensi hanya memberikan tiket kepada pembeli yang telah menyelesaikan proses transaksi terlebih dahulu.
Protokol Kontrol Konkurensi
Protokol kontrol konkurensi yang berbeda menawarkan manfaat yang berbeda antara jumlah konkurensi yang diizinkan dan jumlah overhead yang diberlakukan. Berikut adalah teknik Kontrol Konkurensi di DBMS:
- Protokol Berbasis Kunci
- Protokol Penguncian Dua Fase
- Protokol Berbasis Stempel Waktu
- Protokol Berbasis Validasi
Protokol Berbasis Kunci
Protokol Berbasis Kunci di DBMS adalah mekanisme di mana transaksi tidak dapat Membaca atau Menulis data hingga memperoleh kunci yang sesuai. Protokol berbasis kunci membantu menghilangkan masalah konkurensi di DBMS untuk transaksi simultan dengan mengunci atau mengisolasi transaksi tertentu ke satu pengguna.
Kunci adalah variabel data yang dikaitkan dengan item data. Kunci ini menandakan bahwa operasi yang dapat dilakukan pada item data. Kunci di DBMS membantu menyinkronkan akses ke item database dengan transaksi bersamaan.
Semua permintaan kunci dibuat untuk manajer kontrol konkurensi. Transaksi dilanjutkan hanya setelah permintaan kunci dikabulkan.
Kunci Biner: Kunci biner pada item data dapat berupa status terkunci atau tidak terkunci.
Bersama / eksklusif: Jenis mekanisme penguncian ini memisahkan kunci di DBMS berdasarkan penggunaannya. Jika kunci diperoleh pada item data untuk melakukan operasi tulis, itu disebut kunci eksklusif.
1. Kunci Bersama:
Kunci bersama juga disebut kunci Read-only. Dengan kunci bersama, item data dapat dibagikan antar transaksi. Ini karena Anda tidak akan pernah memiliki izin untuk memperbarui data pada item data.
Misalnya, pertimbangkan kasus di mana dua transaksi membaca saldo akun seseorang. Basis data akan membiarkan mereka membaca dengan menempatkan kunci bersama. Namun, jika transaksi lain ingin memperbarui saldo akun itu, kunci bersama mencegahnya sampai proses membaca selesai.
2. Kunci Eksklusif (X):
Dengan Kunci Eksklusif, item data dapat dibaca dan juga ditulis. Ini eksklusif dan tidak dapat disimpan secara bersamaan pada item data yang sama. X-lock diminta menggunakan instruksi lock-x. Transaksi dapat membuka kunci item data setelah menyelesaikan operasi 'tulis'.
Misalnya, ketika transaksi perlu memperbarui saldo akun seseorang. Anda dapat mengizinkan transaksi ini dengan menempatkan kunci X di atasnya. Oleh karena itu, ketika transaksi kedua ingin membaca atau menulis, kunci eksklusif mencegah operasi ini.
3. Protokol Kunci Sederhana
Jenis protokol berbasis kunci ini memungkinkan transaksi untuk mendapatkan kunci pada setiap objek sebelum memulai operasi. Transaksi dapat membuka kunci item data setelah menyelesaikan operasi 'tulis'.
4. Penguncian Pra-klaim
Protokol kunci pra-klaim membantu mengevaluasi operasi dan membuat daftar item data yang diperlukan yang diperlukan untuk memulai proses eksekusi. Dalam situasi ketika semua kunci diberikan, transaksi dijalankan. Setelah itu, semua kunci akan terlepas saat semua operasinya selesai.
Kelaparan
Kelaparan adalah situasi ketika transaksi harus menunggu selama waktu yang tidak ditentukan untuk mendapatkan kunci.
Berikut adalah alasan kelaparan:
- Saat menunggu skema untuk item terkunci tidak dikelola dengan baik
- Dalam kasus kebocoran sumber daya
- Transaksi yang sama dipilih sebagai korban berulang kali
Jalan buntu
Kebuntuan mengacu pada situasi tertentu di mana dua atau lebih proses menunggu satu sama lain untuk melepaskan sumber daya atau lebih dari dua proses menunggu sumber daya dalam rantai melingkar.
Protokol Penguncian Dua Fase
Protokol Penguncian Dua Fase juga dikenal sebagai protokol 2PL adalah metode kontrol konkurensi dalam DBMS yang memastikan kemampuan bersambung dengan menerapkan kunci ke data transaksi yang memblokir transaksi lain untuk mengakses data yang sama secara bersamaan. Protokol Penguncian Dua Fase membantu menghilangkan masalah konkurensi di DBMS.
Protokol penguncian ini membagi fase eksekusi transaksi menjadi tiga bagian berbeda.
- Pada tahap pertama, saat transaksi mulai dijalankan, diperlukan izin untuk kunci yang dibutuhkannya.
- Bagian kedua adalah tempat transaksi mendapatkan semua kunci. Ketika sebuah transaksi melepaskan kunci pertamanya, fase ketiga dimulai.
- Pada fase ketiga ini, transaksi tidak dapat meminta kunci baru. Sebagai gantinya, itu hanya melepaskan kunci yang diperoleh.
Protokol Penguncian Dua Fase memungkinkan setiap transaksi untuk membuat permintaan kunci atau buka kunci dalam dua langkah:
- Fase Tumbuh : Dalam fase ini, transaksi dapat memperoleh kunci tetapi tidak dapat melepaskan kunci apa pun.
- Fase Penyusutan : Dalam fase ini, transaksi dapat membuka kunci tetapi tidak mendapatkan kunci baru
Memang benar bahwa protokol 2PL menawarkan kemampuan bersambung. Namun, itu tidak memastikan bahwa kebuntuan tidak terjadi.
Dalam diagram yang diberikan di atas, Anda dapat melihat bahwa detektor kebuntuan lokal dan global sedang mencari kebuntuan dan menyelesaikannya dengan melanjutkan transaksi ke keadaan awalnya.
Metode Penguncian Dua Fase Yang Ketat
Sistem penguncian dua fase yang ketat hampir mirip dengan 2PL. Satu-satunya perbedaan adalah Strict-2PL tidak pernah melepaskan kunci setelah menggunakannya. Itu memegang semua kunci sampai titik komit dan melepaskan semua kunci sekaligus ketika proses selesai.
2PL terpusat
Di Centralized 2 PL, satu situs bertanggung jawab atas proses manajemen kunci. Ini hanya memiliki satu manajer kunci untuk seluruh DBMS.
Salinan utama 2PL
Mekanisme 2PL salinan utama, banyak manajer kunci didistribusikan ke situs yang berbeda. Setelah itu, manajer kunci tertentu bertanggung jawab untuk mengelola kunci untuk sekumpulan item data. Ketika salinan utama telah diperbarui, perubahan disebarkan ke budak.
Mendistribusikan 2PL
Dalam mekanisme penguncian dua fase semacam ini, pengelola kunci didistribusikan ke semua situs. Mereka bertanggung jawab untuk mengelola kunci untuk data di situs itu. Jika tidak ada data yang direplikasi, itu setara dengan salinan utama 2PL. Biaya komunikasi 2PL Terdistribusi cukup tinggi daripada salinan utama 2PL
Protokol berbasis stempel waktu
Protokol berbasis stempel waktu di DBMS adalah algoritme yang menggunakan Waktu Sistem atau Penghitung Logis sebagai stempel waktu untuk membuat serial eksekusi transaksi bersamaan. Protokol berbasis stempel waktu memastikan bahwa setiap operasi baca dan tulis yang bentrok dijalankan dalam urutan stempel waktu.
Transaksi lama selalu mendapat prioritas dalam metode ini. Ini menggunakan waktu sistem untuk menentukan cap waktu transaksi. Ini adalah protokol konkurensi yang paling umum digunakan.
Protokol berbasis kunci membantu Anda mengelola urutan antara transaksi yang berkonflik saat akan dieksekusi. Protokol berbasis stempel waktu mengelola konflik segera setelah operasi dibuat.
Contoh:
Suppose there are there transactions T1, T2, and T3.T1 has entered the system at time 0010T2 has entered the system at 0020T3 has entered the system at 0030Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.
Keuntungan :
- Jadwal dapat diserialkan seperti protokol 2PL
- Tidak perlu menunggu transaksi, yang menghilangkan kemungkinan kebuntuan!
Kekurangan:
Kelaparan mungkin terjadi jika transaksi yang sama dimulai ulang dan terus menerus dibatalkan
Protokol Berbasis Validasi
Protokol berbasis validasi di DBMS juga dikenal sebagai Teknik Kontrol Konkurensi Optimis adalah metode untuk menghindari konkurensi dalam transaksi. Dalam protokol ini, salinan lokal dari data transaksi diperbarui daripada data itu sendiri, yang menghasilkan lebih sedikit gangguan saat eksekusi transaksi.
Protokol berbasis validasi dilakukan dalam tiga tahap berikut:
- Baca Fase
- Fase Validasi
- Fase Menulis
Baca Fase
Dalam Tahap Baca, nilai data dari database dapat dibaca oleh transaksi tetapi operasi tulis atau pembaruan hanya diterapkan pada salinan data lokal, bukan database yang sebenarnya.
Fase Validasi
Pada Tahap Validasi, data diperiksa untuk memastikan bahwa tidak ada pelanggaran serializability saat menerapkan update transaksi ke database.
Fase Menulis
Dalam Write Phase, pembaruan diterapkan ke database jika validasi berhasil, jika tidak; pembaruan tidak diterapkan, dan transaksi dibatalkan.
Karakteristik Protokol Konkurensi yang Baik
Mekanisme DBMS kontrol konkurensi yang ideal memiliki tujuan berikut:
- Harus tahan terhadap kegagalan situs dan komunikasi.
- Ini memungkinkan eksekusi transaksi paralel untuk mencapai konkurensi maksimum.
- Mekanisme penyimpanan dan metode komputasinya harus sederhana untuk meminimalkan overhead.
- Itu harus memberlakukan beberapa batasan pada struktur atom transaksi tindakan.
Ringkasan
- Kontrol konkurensi adalah prosedur dalam DBMS untuk mengelola operasi simultan tanpa bentrok satu sama lain.
- Pembaruan yang Hilang, pembacaan kotor, Pembacaan yang Tidak Dapat Diulang, dan Masalah Ringkasan yang Salah adalah masalah yang dihadapi karena kurangnya kontrol konkurensi.
- Lock-Based, Two-Phase, Timestamp-Based, Validation-Based adalah jenis protokol penanganan Concurrency
- Kunci bisa Dibagikan (S) atau Eksklusif (X)
- Protokol penguncian dua fase yang juga dikenal sebagai protokol 2PL membutuhkan transaksi yang harus memperoleh kunci setelah melepaskan salah satu kuncinya. Ini memiliki 2 fase tumbuh dan menyusut.
- Algoritme berbasis stempel waktu menggunakan stempel waktu untuk membuat serial eksekusi transaksi serentak. Protokol menggunakan Waktu Sistem atau Hitungan Logis sebagai Stempel Waktu.