Pretest_VC6_3KA88_12118087_Duriyawati
VC6 Pretest : Pengontrolan Konkurensi
Apa yang anda pahami
tentang konkurensi?
Konkurensi
adalah bisa dikatakan sebagai suatu fitur di mana database management
system(DBMS) mengijinkan banyak transaksi pada saat bersamaan untuk
mengakses data yang sama. Dalam melakukan konkurensi dibutuhkan suatu Concurency
Control Mechanism (CCM) agar transaksi yang dilakukan oleh banyak user
pada suatu sistem di dalam waktu yang bersamaan tidak saling “mengganggu” dan
tidak menghasilkan inconsistency data.
Tiga
masalah dalam Konkurensi :
- Lost
Update Problem
Masalah operasi update yang
sukses dari seorang pengguna kemudian ditimpali oleh operasi update dari
pengguna lain.
- Uncomited
dependency problem (ketergantungan yg tidak sukses/modifikasi sementara)
Masalah terjadi saat suatu transaksi membaca data dari transaksi lain yg belum dicommit. - Inconsistent
analysis problem
Masalah
terjadi saat satu transaksi membaca beberapa nilai tetapi transaksi kedua pd
waktu sama memodifikasi nilai tersebut.
Dua
Outcome dari Konkurensi :
- Commit
Jika operasi berjalan sukses, maka transaksi disebut commited, basis data mencapai kondisi konsisten yang baru. - Abort
Jika operasi berjalan tidak sukses, maka transaksi disebut aborted (gagal)Jika transaksi gagal maka basis data kembali ke keadaan konsisten sebelum transaksi dimulai. Disebut roll back atau undone.
Locking
Jika sebuah transaksi ingin
record/resource tidak berubah dalam waktu tertentu maka dia meminta lock. jenis
lock :
- Exclusive
Lock (Xlock) à write lock
- Shared
Lock (Slock) à read lock
Deadlock
Situasi
dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain
menunggu lock dilepaskan sebelum dapat memulai. Dapat diatasi dengan cara :
- Deteksi
dan pecahkan deadlock
- Deteksi
deadlock à wait-for-graph
- Pecahkan
deadlock à salah satu dirollback paksa (bagaimana penanganan rollback
ini?)
- Ostrich
Algorithmà diabaikan
Mengapa perlu dilakukan
pengontrolan konkurensi
?
Perintah
“savepoint” dan “rollback” terdapat dalam materi Concurency. Concurency adalah banyak
transaksi yang dijalankan secara bersama-sama. Hampir semua DBMS adalah
multiuser, sehingga berpeluang terjadinya inkonsistensi basis data. Maka perlu
adanya pengendalian persaingan eksekusi transaksi (concurrency control).
Pengontrolan
konkurensi merupakan salah satu fungsi dari DBMS. Pada DBMS terpusat yang
multi-user, dapat mengakses sejumlah transaksi pada waktu bersamaan. Transaksi disini
adalah suatu aksi atau serangkaian aksi yang dilakukan oleh seorang
pemakai atau suatu program aplikasi, dimana dapat mengakses atau mengubah isi
dari database.
Dua
hasil transaksi adalah commit atau rollback.
Commit Adalah operasi yang
menyatakan bahwa suatu transaksi sudah terselesaikan/ sukses (successfull
end-of-transaction).
RollBack Adalah operasi yang
menyatakan bahwa suatu transaksi dibatalkan (unsuccessfull end-of-transaction).
Untuk
menjamin transaksi-transaksi yang dilakukan bersamaan berjalan sukses tanpa
adanya tumpang tindih maka dibutuhkan mekanisme pengontrolan konkurensi, jika
tidak timbul permasalahan:
Lost
update
Permasalahan
timbul pada saat operasi update berjalan sukses kemudian ditindih oleh
operasi update lain yang dilakukan oleh pemakai lain.
Uncommited
dependency
Permasalahan
timbul pada saat transaksi dibiarkan melihat hasil dari transasksi lain yang
belum commit. Masalah ini timbul jika transaksi membaca suatu
record yang sudah dimodifikasi oleh transaksi lain tetapi belum terselesaikan
(uncommited), terdapat kemungkinan kalau transaksi tersebut dibatalkan
(rollback).
Inconsistent
analysis
Permasalahan
timbul apabila suatu transaksi membaca beberapa nilai tetapi transasksi
berikutnya memodifikasi salah satu nilai.
Teknik
Pengontrolan Konkurensi :
LOCKING
Apabila
suatu transaksi mengakses suatu data maka suatu lock (kunci) dapat mencegah
pengaksesan oleh transasksi lain.
Konsep
dasar :
Ketika
suatu transaksi memerlukan jaminan kalau record yang diingini tidak akan
berubah secara mendadak, maka diperlukan kunci untuk record tersebut.
Fungsi
kunci (lock)
Menjaga
record tersebut agar tidak dimodifiksi transaksi lain.
Cara
kerja dari kunci :
- Kita
asumsikan terdapat 2 (dua) macam kunci :
- Kunci
X (kunci eksklusif) dan kunci S (kunci yang digunakan bersama-sama)
- Jika
transaksi A menggunakan kunci X pada record R, maka permintaan dari
transaksi B harus menunggu sampai nanti transaksi A melepaskan kunci
- Jika
transaksi A menggunakan kunci S pada record R, Maka :
- Bila
transaksi B ingin menggunakan kunci X, maka B harus menunggu sampai A
melepaskan kunci tersebut.
- Bila
transaksi B ingin menggunakan kuni S, maka B bisa menggunakan kunci S
bersama A
TIMESTAMPING
DEADLOCK
adalah suatu situasi dimana dua atau lebih transaksi masing – masing menunggu
(wait) suatu kunci yg ditahan oleh transaksi lain, untuk dilepaskan. 2 teknik
menangani deadlock
- Deadlock
prevention, DBMS mengamati transaksi apakah menimbulkan deadlock &
tidak akan membiarkan deadlock terjadi
- Deadlock
prevention and recovery, DBMS membiarkan terjadi deadlock, mengenalinya
lalu menanganinya.
Time
stamping untuk
sebuah transaksi aksi merupakan suatu tanda pengenal yang unik yang menunjuk
waktu mulai relatif dari transaksi.
Time stamp dapat
berupa pembacaan pada kunci internal pada waktu transaksi dimulai, dapat berupa
nilai dari suatu penunjuk logikal yang dapat bertambah setiap kali suatu
transaksi baru dimulai.
Komentar
Posting Komentar