DBMS - Kontrol Konkurensi
Dalam lingkungan multiprogramming di mana banyak transaksi dapat dieksekusi secara bersamaan, sangat penting untuk mengontrol konkurensi transaksi. Kami memiliki protokol kontrol konkurensi untuk memastikan atomicity, isolasi, dan serialisasi transaksi serentak. Protokol kontrol konkurensi secara luas dapat dibagi menjadi dua kategori -
- Protokol berbasis kunci
- Protokol berbasis cap waktu
Protokol Berbasis Kunci
Sistem database yang dilengkapi dengan protokol berbasis kunci menggunakan mekanisme di mana setiap transaksi tidak dapat membaca atau menulis data sampai ia memperoleh kunci yang sesuai padanya. Kunci ada dua jenis -
Binary Locks- Kunci pada item data dapat berada di dua status; itu terkunci atau tidak terkunci.
Shared/exclusive- Jenis mekanisme penguncian ini membedakan kunci berdasarkan penggunaannya. Jika kunci diperoleh pada item data untuk melakukan operasi tulis, itu adalah kunci eksklusif. Mengizinkan lebih dari satu transaksi untuk menulis pada item data yang sama akan menyebabkan database menjadi tidak konsisten. Kunci baca dibagikan karena tidak ada nilai data yang diubah.
Ada empat jenis protokol kunci yang tersedia -
Protokol Kunci Sederhana
Protokol berbasis kunci yang sederhana memungkinkan transaksi untuk mendapatkan kunci pada setiap objek sebelum operasi 'tulis' dilakukan. Transaksi dapat membuka kunci item data setelah menyelesaikan operasi 'tulis'.
Protokol Kunci Pra-klaim
Protokol pra-klaim mengevaluasi operasi mereka dan membuat daftar item data yang perlu dikunci. Sebelum memulai eksekusi, transaksi meminta sistem untuk semua kunci yang dibutuhkannya sebelumnya. Jika semua kunci diberikan, transaksi dijalankan dan dilepaskan semua kunci ketika semua operasinya selesai. Jika semua kunci tidak diberikan, transaksi akan bergulir kembali dan menunggu sampai semua kunci diberikan.
Penguncian Dua Fase 2PL
Protokol penguncian ini membagi fase eksekusi transaksi menjadi tiga bagian. Pada bagian pertama, saat transaksi mulai dijalankan, ia meminta izin untuk kunci yang diperlukannya. Bagian kedua adalah tempat transaksi memperoleh semua kunci. Segera setelah transaksi melepaskan kunci pertamanya, fase ketiga dimulai. Dalam fase ini, transaksi tidak dapat meminta kunci baru; itu hanya melepaskan kunci yang diperoleh.
Penguncian dua fase memiliki dua fase, satu fase growing, di mana semua kunci diperoleh melalui transaksi; dan fase kedua menyusut, di mana kunci yang dipegang oleh transaksi dilepaskan.
Untuk mengklaim kunci (tulis) eksklusif, transaksi harus terlebih dahulu memperoleh kunci bersama (baca) dan kemudian meningkatkannya menjadi kunci eksklusif.
Penguncian Dua Fase Ketat
Fase pertama Strict-2PL sama dengan 2PL. Setelah memperoleh semua kunci di fase pertama, transaksi terus dijalankan secara normal. Namun berbeda dengan 2PL, Strict-2PL tidak membuka kunci setelah menggunakannya. Strict-2PL menahan semua kunci hingga titik komit dan melepaskan semua kunci pada satu waktu.
Strict-2PL tidak memiliki cascading abort seperti halnya 2PL.
Protokol berbasis stempel waktu
Protokol konkurensi yang paling umum digunakan adalah protokol berbasis stempel waktu. Protokol ini menggunakan waktu sistem atau penghitung logis sebagai stempel waktu.
Protokol berbasis kunci mengelola urutan antara pasangan yang berkonflik di antara transaksi pada saat eksekusi, sedangkan protokol berbasis stempel waktu mulai bekerja segera setelah transaksi dibuat.
Setiap transaksi memiliki stempel waktu yang terkait dengannya, dan pemesanan ditentukan oleh usia transaksi. Transaksi yang dibuat pada waktu jam 0002 akan lebih lama dari semua transaksi lain yang terjadi setelahnya. Misalnya, setiap transaksi 'y' yang memasuki sistem pada 0004 adalah dua detik lebih muda dan prioritas akan diberikan ke yang lebih lama.
Selain itu, setiap item data diberikan stempel waktu baca dan tulis terbaru. Ini memungkinkan sistem mengetahui kapan operasi 'baca dan tulis' terakhir dilakukan pada item data.
Protokol Pemesanan Stempel Waktu
Protokol pengurutan stempel waktu memastikan kemampuan serial di antara transaksi dalam operasi baca dan tulis yang bentrok. Ini adalah tanggung jawab sistem protokol bahwa pasangan tugas yang berkonflik harus dijalankan sesuai dengan nilai stempel waktu transaksi.
- Stempel waktu transaksi T i dilambangkan sebagai TS (T i ).
- Baca stempel waktu dari data-item X dilambangkan dengan R-timestamp (X).
- Tulis stempel waktu dari data-item X dilambangkan dengan W-timestamp (X).
Protokol pemesanan stempel waktu berfungsi sebagai berikut -
If a transaction Ti issues a read(X) operation −
- Jika TS (Ti) <W-timestamp (X)
- Operasi ditolak.
- Jika TS (Ti)> = W-timestamp (X)
- Operasi dijalankan.
- Semua stempel waktu item data diperbarui.
If a transaction Ti issues a write(X) operation −
- Jika TS (Ti) <R-timestamp (X)
- Operasi ditolak.
- Jika TS (Ti) <W-timestamp (X)
- Operasi ditolak dan Ti dibatalkan.
- Jika tidak, operasi dijalankan.
Aturan Tulis Thomas
Aturan ini menyatakan jika TS (Ti) <W-timestamp (X), maka operasi ditolak dan T i dibatalkan.
Aturan pemesanan stempel waktu dapat dimodifikasi untuk membuat tampilan jadwal dapat diserialkan.
Alih-alih membuat T i dibatalkan, operasi 'tulis' itu sendiri diabaikan.