Konkurensi (Lanjutan) 8 Konkurensi (Lanjutan) 1
Kontrol Konkurensi •Masalah – dalam lingkungan multiuser, akses simultan ke data akan menghasilkan interferensi dan kehilangan data •Solusi – kontrol konkurensi Proses mengelola operasi simultan pada basis data sehingga keutuhan data dapat dipelihara dan operasi-operasi tersebut tidak berinter ferensi satu sama lain dalam lingkungan multiuser
Teknik Kontrol Konkurensi •Serializability Selesaikan satu transaksi sebelum memulai yang lain •Mekanisme penguncian - Cara yang paling umum untuk mencapai serialization - Data yang diambil untuk diperbarui dikunci oleh pemakai yang hendak melalukan pembaruan - Tidak ada pemakai yang boleh melakukan pembaruan sampai penguncian dilepas
Mekanisme Penguncian • Level penguncian: – Basis data – digunakan selama pembaruan basis data – Tabel – digunakan selama pembaharuan seluruhnya – Blok atau page – sangat sering – Record – hanya pada baris yang diminta; lumayan sering digunakan – Field – menyebabkan overhead yang signifikan; tidak praktis
Jenis penguncian – Shared lock – Baca tapi tidak boleh memperbarui. Digunakan ketika baru saja akan membaca, dengan tujuan mencegah pemakai melakukan exclusive lock pada record – Exclusive lock – Tidak boleh akses sama sekali. Digunakan ketika mempersiapkan pembaruan.
Deadlock Kebuntuan yang dihasilkan ketika dua atau lebih transaksi mengunci sumber daya bersama, dan masing-masing menunggu yang lainnya untuk melepas sumber daya
Mengelola Deadlock •Prevention deadlock: – Kunci semua records yang dibutuhkan di awal transaksi – Protokol penguncian dua fase • Fase Growing • Fase Shrinking – Mungkin sulit untuk menentukan semua sumber data yang diperlukan di depan •Resolusi deadlock: – Mengijinkan deadlock terjadi – Mekanisme untuk mendeteksi dan memecahkannya • Matriks penggunaan sumber daya
Versioning • Pendekatan optimistik untuk kontrol konkurensi • Pengganti penguncian • Asumsi yang digunakan adalah bahwa update-update yang bersamaan akan jarang terjadi • Setiap transaksi dapat mencoba untuk melakukan update jika dikehendaki • Sistem akan menolak pembaruan jika bakal terjadi konflik • Menggunakan rollback dan commit