Konkurensi dengan Mekanisme Serializability

Serializability adalah untuk menemukan non serial schedule yang mengijinkan transaksi untuk berjalan secara bersamaan tanpa mengganggu satu sama lain, dan kemudian memproduksi sebuah state database yang dapat diproduksi oleh sebuah eksekusi serial. Jika sebuah set transaksi berjalan secara bersamaan, bisa dikatakan bahwa schedule (nonserial) adalah benar jika memproduksi hasil yang sama seperti beberapa eksekusi serial lainnya. Schedule seperti itu disebut serializable. Untuk mencegah inkonsistensi dari transaksi yang mengganggu satu sama lain, penting untuk menjamin serializability dari transaksi yang jalan bersamaan.
Pada serializability, urutan operasi baca dan tulis itu penting. Berikut ini hal – hal yang perlu diperhatikan:
  • Jika dua transaksi hanya membaca satu item data yang sama, dua transaksi tersebut tidak mengalami konflik dan urutan menjadi tidak penting.
  • Jika dua transaksi melakukan operasi membaca ataupun menulis pada item data yang berbeda, dua transaksi tersebut tidak mengalami konflik dan urutan menjadi tidak penting.
  • Jika satu transaksi menulis sebuah item data dan transaksi lain baik membaca ataupun menulis pada item data yang sama, maka urutan eksekusi itu menjadi penting.
Untuk menjamin serializability, ada 2 metode yang dapat digunakan yaitu :
Growing phase
transaksi memperoleh semua kunci yang diperlukan tanpa melepas kunci data apapun. Setelah semua kunci diperoleh, transaksi berada dalam posisi terkunci.
Shrinking phase
Transaksi melepaskan semua kunci & tidak dapat memperoleh kunci baru. Dikendalikan oleh aturan berikut: Dua transaksi tidak dapat memiliki kunci yang saling bertentangan.
Tidak ada operasi unlock yang dapat mendahului operasi lock dalam transaksi yang sama. Tidak ada data yang diproses sampai semua kunci diperoleh – yaitu sampai transaksi berada dalam posisi terkunci.
Matrik Locking
Ketika suatu transaksi memerlukan jaminan kalau record yang diingini tidak akan berubah secara mendadak, maka diperlukan kunci untuk record tersebut.
Fungsi kunci (lock) adalah menjaga record tersebut agar tidak dimodifiksi transaksi lain.
Cara kerja dari kunci :
1. Kita asumsikan terdapat 2 (dua) macam kunci
Kunci X (kunci eksklusif) dan kunci S (kunci yang digunakan bersama-sama)
2. Jika transaksi A menggunakan kunci X pada record R, maka permintaan dari transaksi B harus menunggu sampai nanti transaksi A melepaskan kunci
3. Jika transaksi A menggunakan kunci S pada record R, Maka :
(a) Bila transaksi B ingin menggunakan kunci X, maka B harus menunggu sampai A melepaskan kunci tersebut.
(b) Bila transaksi B ingin menggunakan kuni S, maka B bisa menggunakan kunci S bersama A
4. Bila suatu transaksi hanya melakukan pembacaan saja,secara otomatis ia memerlukan kunci S. Bila transaksi tersebut ingin memodifikasi record, maka secara otomatis ia memerlukankunci X. Bila transaksi tersebut sudah menggunakan kunci S, setelah itu ia akan memodifikasi record, maka kunci S akan dinaikkan ke level kunci X.
5. Kunci X dan kunci S akan dilepaskan pada saat Synchpoint(synchronization point). Bila synchpoint ditetapkan maka:
-semua modifikasi program menjalankan operasi COMMIT atau ROLLBACK
-semua kunci dari record dilepaskan

Komentar