Serializibility 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
0 comments:
Post a Comment