TRANSAKSI
& CONCURRENCY
1.
Transaksi
Transaksi merupakan
aktivitas yang dilakukan oleh suatu program aplikasi yang berfungsi untuk menjaga
konsistensi keamanan data. Tujuan dari transaksi yaitu untuk melindungi
database dari kehilangan / kerusakan data.Transaksi memiliki 4 elemen untuk
menjaga integritas data. Adapu 4 elemen tersebut :
·
Atomicity, dimana
semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidaksama
sekali.
·
Consistency,
dimana eksekusi transaksi harus dapat
menjamin data tetap konsisten setelah transaksi berakhir.
·
Isolation,
jika pada sebuah sistem basis data
terdapat sejumlah transaksi yang dilaksanakan secara
bersamaan, maka semua transaksi yang dilaksanakan pada saat yang bersamaan
tersebut harus dapat dimulai dan bisa berakhir.
·
Durability, dimana
perubahan data yang terjadi setelah sebuah transaksi berakhir dengan baik,
harus dapat bertahan bahkan jika seandainya sistem mati.
Dua Operasi Penting Transaksi :
·
Commit
Memberi tanda bahwa transaksi telah selesai.
Update dibuat permanen (bahkan jika setelah commit terjadi kegagalan system).
·
Rollback
Memberi tanda bahwa transaksi GAGAL.
2.
Concurrency
Concurrency adalah
banyaknya transaksi yang dijalankan secara bersamaan dalam satu waktu. DBMS
mengijinkan banyak transaksi pada saat bersamaan untuk mengakses data yang
sama. Concurrency Control Mechanism (CCM) dibutuhkan agar transaksi tidak
saling “menggangu”.
Adapun 3 masalah concurrency adalah :
Adapun 3 masalah concurrency adalah :
·
Lost Update Problem
·
Uncommitted Dependency
Problem
·
Incosistent Analysis
Problem
Locking
Locking terjadi jika suatu transaksi ingin record atau resource tidak berubah dalam waktu tertentu
Jenis Lock
·
Exclusive Lock (Xlock)
atau write lock yaitu locking yang hanya bisa di gunakan untuk mengupdate dan
membaca transaksi
·
Shared Lock (Slock)
atau read lock yaitu locking yang hanya bisa di gunakan untuk membaca
transaksi.
Contoh kasus dari locking :
·
Jika transaksi A
memegang Xlock pada sebuah record, maka permintaan lock (X,S) pada record yang
sama harus diabaikan.
·
Jika transaksi A
memegang Slock pada record R maka:
– Permintaan Xlock trans. lain pada R ditolak
– Permintaan Slock trans. lain pada R diterima
Data Access Protocol
– Permintaan Slock trans. lain pada R diterima
Data Access Protocol
·
Transaksi yang
ingin mengambil nilai sebuah record (retrieve) harus mendapat Slock
pada record tersebut
·
Transaksi yang ingin
mengupdate, harus mendapat Xlock
Contoh kasus :
·
Jika lock dari
transaksi B ditolak karena konflik dengan lock yang dimiliki transaksi A,
transaksi B masuk ke wait state sampai lock milik A dibebaskan.
·
Xlock dan Slock
dipegang sampai transaksi selesai (COMMIT atau ROLLBACK).
Lost Update Problem dengan LOCK
Uncommitted Dependency Problem dengan LOCK
Incosistent Analysis Problem dengan LOCK
Dead Lock
Dead lock adalah situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepaskan sebelum dapat memulai
Dead lock adalah situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepaskan sebelum dapat memulai
Contoh Deadlock
Penanganan Deadlock
·
Deteksi dan pecahkan
deadlock
·
Deteksi deadlock >
wait-for-graph
·
Pecahkan deadlock >
salah satu dirollback paksa (bagaimana penanganan rollback ini?)
·
Ostrich
Algorithm > diabaikan
Referensi :
- Modul 10554_pengantar_basis_data.pdf
- Hand Out Sistem Basis Data: Transaksi & Concurrency oleh Yudi Wibisono, MT
- https://prithaangelina.wordpress.com/2013/05/19/concurrency/
- http://perdiarief.blogspot.co.id/2014/11/praktikum-simbada-transaksi.html
- http://nfirdausi.blogspot.co.id/2014/04/transaksi-simbada.html








No comments:
Post a Comment