SISTEM BASIS DATA 2 WAHYU PRATAMA, S.Kom., MMSI.
PERTEMUAN 8 – SBD 2 Database Control Concurrency. Jenis Masalah dan Contoh Concurency :
Deadlock.
Commit.
Rollback.
Concurrency Control.
Concurrency
Konkurensi (Concurrency) dapat dikatakan sebagai suatu fitur DBMS dalam mengizinkan banyak transaksi pada saat bersamaan untuk mengakses data yang sama.
Pada konkurensi dibutuhkan suatu Concurency Control Mechanism (CCM) agar transaksi yang dilakukan oleh banyak pengguna pada suatu sistem di dalam waktu yang bersamaan tidak saling “mengganggu” dan tidak menghasilkan inconsistency data.
Masalah dalam konkurensi terdiri dari :
Lost Update Problem, masalah operasi update yang sukses dari seorang pengguna kemudian diikuti oleh operasi update dari pengguna lain.
Uncommited Dependency Problem, masalah terjadi saat suatu transaksi membaca data dari transaksi lain yang belum di-commit.
Inconsistent Analysis Problem, masalah terjadi saat satu transaksi membaca beberapa nilai tetapi transaksi kedua pada waktu yang sama memodifikasi nilai tersebut.
Concurrency selanjutnya … Lost Update Problem
Transaksi A retrieve nilai t saat w1.
Transaksi B retrieve nilai t saat w2.
Transaksi B mengubah nilai satu atau record tanpa melihat efek transaksi A.
Transaksi B overwrite nilai-nilai hasil transaksi A, sehingga mungkin transaksi A tidak melihat efek perubahan yang dilakukan B. Transaksi A
select * from t;
Waktu
w1 w2
update t set id = 1 where id = 2;
Transaksi B select * from t;
w3 w4
update t set id = 3 where id = 2;
Concurrency selanjutnya … Uncommited Dependency Problem
Masalah muncul jika transaksi diizinkan retrieve record-record yang telah diubah nilainya oleh transaksi lain yang belum terekam, sehingga ada kemungkinan perubahan tersebut akan di-undo (redo), dikenal dengan dirty read problem. Transaksi A dependent ke uncommitted change pada saat w2 Transaksi A
Waktu w1
select * from t;
Transaksi B update t set dept_id = 1;
w2 w3
rollback;
Transaksi A mengubah uncommitted change saat w2, kehilangan saat w3 Transaksi A
Waktu w1
update t set dept_id = 1;
Transaksi B update t set dept_id = 1;
w2 w3
rollback;
Concurrency selanjutnya … Inconsistent Analysis Problem
Terjadi ketika transaksi pertama membaca beberapa nilai tetapi transaksi kedua melakukan perubahan terhadap nilai tersebut selama eksekusi transaksi pertama berlangsung. Hal ini disebut dengan nonrepeatable or fuzzy read. Waktu
Transaksi 1
t1 t2
Transaksi 2
balx
baly
balz
100
50
25
sum = 0
100
50
25
0
begin_transaction begin_transaction
sum
t3
read(balx)
read(balx)
100
50
25
0
t4
balx = balx – 10
sum = sum + balx
100
50
25
100
t5
write(balx)
read(baly)
90
50
25
100
t6
read(balz)
sum = sum + baly
90
50
25
150
t7
balz = balz + 10
90
50
25
150
t8
write(balz)
90
50
35
150
read(balz)
90
50
35
150
sum = sum + balz
90
50
35
185
90
50
35
185
t9 t10 t11
commit
commit
Deadlock
Deadlock adalah suatu keadaan yang dapat terjadi ketika dua atau lebih transaksi masing-masing menunggu lock yang sedang dipegang oleh transaksi lainnya untuk dilepas.
Cara untuk mengatasi deadlock, yaitu abort satu atau lebih transaksi. Ada tiga cara untuk menangani deadlock, yaitu timeout, deadlock prevention dan deadlock detection and recovery.
Timeout, pendekatan ini memungkinkan sebuah transaksi yang meminta sebuah lock akan menunggu hanya sampai periode waktu tertentu yang didefinisikan sistem.
Deadlock Prevention, pendekatan lain untuk mencegah deadlock adalah untuk memesan transaksi menggunakan timestamp transaksi.
Deadlock Detection and Recovery, biasanya ditangani oleh konstruksi wait-for graph (WFG) yang menunjukkan ketergantungan transaksi.
Deadlock
selanjutnya … Tabel 1
Contoh Deadlock
Tabel 4
Tabel 2
Tabel 3
Commit dan Rollback
Commit adalah perintah yang mengakhiri transaksi terkini dan membuat setiap perubahan selama transaksi tersebut menjadi permanen.
Sampai program melakukan commit terhadap perubahan, penggunapengguna lain tidak dapat mengakses data yang telah berubah tersebut.
Rollback adalah perintah yang mengakhiri transaksi dan membatalkan perubahan-perubahan yang dibuat selama transaksi.
Rollback berguna untuk dua alasan, Pertama, jika kita membuat kesalahan ketika menghapus baris data dari tabel, rollback mengembalikan data pertama. Kedua, jika kita memulai transaksi yang tidak dapat kita selesaikan karena munculnya exception atau gagalnya perintah SQL, rollback mengijinkan kita untuk kembali ke titik awal untuk melakukan pembetulan dan mungkin mencobanya lagi.
Commit dan Rollback selanjutnya … Contoh Perintah Commit Waktu
Transaksi
t1
begin_transaction
balx
baly
100
50
t2
read(balx)
100
50
t3
balx = balx – 10
100
50
t4
write(balx)
90
50
t5
read(baly)
90
50
t6
baly = baly + 10
90
50
t7
write(baly)
90
60
90
60
t8
commit
Contoh Perintah Rollback Transaksi A
Waktu w1
select * from t;
Transaksi B update t set dept_id=1;
w2
w3
rollback;
Concurrency Control
Concurrency Control merupakan proses pengaturan operasi yang simultan pada basis data tanpa menyebabkan saling mempengaruhi antara satu dengan yang lain.
Akses konkuren tidak akan bermasalah jika pengguna hanya melakukan pembacaan data saja, gangguan akan terjadi jika dua atau lebih pengguna mengakses basis data secara simultan dan sedikitnya melakukan suatu perubahan (update), maka dapat menyebabkan ketidakkonsistenan (inconsistencies) sebuah data.
Terdapat dua teknik kontrol konkurensi yang memungkinkan transaksi untuk mengeksekusi dengan aman dalam subjek paralel untuk batasan tertentu, yaitu Metode Locking dan Metode Timestamping.
Metode locking dan timestamping pada dasarnya merupakan pendekatan konservatif (pesimistik) yang dapat menyebabkan penundaan transaksi jika terjadi konflik dengan transaksi lainnya pada waktu yang sama.
Concurrency Control
selanjutnya …
Locking merupakan suatu prosedur untuk mengontrol akses konkuren terhadap data.
Ketika satu transaksi mengakses basis data, sebuah kunci (lock) dapat mengabaikan akses untuk transaksi lainnya, untuk menghindari hasil yang salah.
Secara umum, transaksi harus menegaskan penguncian (lock) shared (read) atau exclusive (write) terhadap data item sebelum pembacaan (read) atau penulisan (write).
Aturan Dasar Locking terdiri dari :
Shared Lock, jika transaksi memiliki shared lock pada suatu data item, maka transaksi tersebut dapat melakukan pembacaan tetapi tidak melakukan perubahan.
Exclusive Lock, Jika transaksi memiliki exclusive lock pada suatu data item, maka transaksi tersebut dapat melakukan pembacaan dan perubahan terhadap data item tersebut.
Referensi
Materi Kuliah : Proses Perancangan Database, http://bit.ly/1VU3d1e
Materi Kuliah : Sistem Basis Data, http://bit.ly/1LpOIAm