Traksaksi dan concurrency dalam sistem basis data sangat berkaitan. Keduanya memiliki fungsi-fungsi khusus terhadap data itu sendiri. Berikut dibahas mengenai traksaksi dan concurrency :
A. TRANSAKSI
Definisi
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 :
A. TRANSAKSI
Definisi
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.
Save Point
Savepoint adalah suatu keadaan atau sebuah titik aman dimana suatu transaksi bisa diselesaikan dalam satu atau beberapa transaksi.
Fungsi dari save point adalah supaya pada saat kita ingin rollback atau ada transaksi yang gagal, transaksi tidak berjalan dari awal kembali, tetapi dari save poin yang telah kita buat.
Untuk membuat sebuah save point, caranya adalah: SAVEPOINT[nama save point];
Setelah dibuat save pointnya kita dapat rollback ke save point tersebut dengan cara: ROLLBACK TO[nama save point];
B. CONCURRENCY
Definisi
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 :
- 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
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