•Transaksi dalam basis data adalah bagian dari eksekusi sebuah program (Oracle, Microsoft Access dll) untuk mengakses basis data dan mengupdate berbagai macam data
•Transaksi dalam basis data harus dikerjakan secara utuh atau tidak sama sekali. Apabila transaksi dikerjakan sebagaian dapat menyebabkan inkonsistensi basis data
•Agar integritas data tidak terganggu, transaksi data harus memiliki sifat-sifat:
•Transaksi dalam basis data harus dikerjakan secara utuh atau tidak sama sekali. Apabila transaksi dikerjakan sebagaian dapat menyebabkan inkonsistensi basis data
•Agar integritas data tidak terganggu, transaksi data harus memiliki sifat-sifat:
- Atomik, dimana semua operasi harus dikerjakan secara utuh atau tidak sama sekali
- Konsisten, dimana semua eksekusi harus dapat menjamin data tetap konsisten sampai eksekusi berakhir
- Terisolasi, dimana apabila ada transaksi yang dilaksanakan bersamaan maka semua transaksi yang bersamaan tersebut harus bisa dimulai dan bisa berakhir
- Bertahan, dimana perubahan data yang terjadi pada sebuah transaksi harus berakhir dengan baik dan dapat bertahan apabila system tersebut mati
- Aktif (Active), yang merupakan status awal (initial state) sebuah transaksi yang menunjukkan transaksi tersebut masih dieksekusi.
- Berhasil Sebagian (Partially Committed), yaitu keadaan yang dicapai transaksi tepat pada saat operasi terakhir dalam transaksi selesai dikerjakan.
- Gagal (Failed), yang merupakan keadaan dimana sebuah transaksi terhenti pengeksekusiannya sebelum tuntas sama sekali.
- Batal (Aborted), yaitu keadaan dimana sebuah transaksi dianggap tidak/belum dikerjakan yang tentu dengan terlebih dahulu diawali dengan mengembalikan semua data yang telah diubah ke nilai-nilai semula. (yang menjadi tanggung jawab DBMS).
- Berhasil Sempurna (Committed), keadaan dimana transaksi telah dinyatakan berhasil dikerjakan seluruhnya dan basis data telah merefleksikan perubahan-perubahan yang memang diinginkan transaksi.
- RollBack, untuk memberi tanda bahwa transaksi gagal dan harus diulang.
• Digunakan untuk membuat titik aman agar bisa dilakukan rollback ke titik tersebut.
• Sintaks :
SAVEPOINT identifier;
• Sintaks rollback ke savepoint tersebut :
ROLLBACK [WORK] TO [SAVEPOINT]
identifier;
• Sintaks untuk menghilangkan savepoint :
RELEASE SAVEPOINT identifier;
LOCK TABLES
• Digunakan untuk mengunci tabel tertentu sehingga hanya bisa dilihat atau bisa dilihat sekaligus dimanipulasi.
• Sintaks :
LOCK TABLES nama_tabel READ|WRITE;
DEADLOCK
• Shared (s) lock – transaksi bisa melihat data
• Exclusive (x) lock – transaksi meng-update dan men-delete data
Fenomena multi transaksi
– lost update : jika ada 2 buah transaksi yang sedang membaca sebuah data dan kemudian mengupdatenya, maka salah satu update akan hilang / tertimpa.
- dirty read/ uncommited read : jika transaksi 1 mengupdate sebuah data dan kemudian transaksi 2 membaca data tersebut, maka jika transaksi 1 meroll back update tersebut, maka transaksi 2 akan melihat data yang salah.
– nonrepeatable read : jika transaksi 1 membaca data, kemudian transaksi 2 mengupdate / menghapus data, maka transaksi 1 akan mendapatkan hasil yang berbeda ketika melakukan pembacaan ulang.
– phantom : jika transaksi 1 melakukan pencarian dengan menggunakan key tertentu, kemudian transaksi 2 melakukan update data yang berkaitan dengan key tersebut, maka bila transaksi 1 melakukan pencarian ulang, akan didapatkan hasil yang berbeda
- dirty read/ uncommited read : jika transaksi 1 mengupdate sebuah data dan kemudian transaksi 2 membaca data tersebut, maka jika transaksi 1 meroll back update tersebut, maka transaksi 2 akan melihat data yang salah.
– nonrepeatable read : jika transaksi 1 membaca data, kemudian transaksi 2 mengupdate / menghapus data, maka transaksi 1 akan mendapatkan hasil yang berbeda ketika melakukan pembacaan ulang.
– phantom : jika transaksi 1 melakukan pencarian dengan menggunakan key tertentu, kemudian transaksi 2 melakukan update data yang berkaitan dengan key tersebut, maka bila transaksi 1 melakukan pencarian ulang, akan didapatkan hasil yang berbeda
sumber
- http://firarif.files.wordpress.com/2010/05/05-transaction-control.pdf
- http://denysutani.com/2008/11/14/concurrency-di-db2/
- Modul Sistem Basis Data - Transaksi
- Slide Transaksi Pak Yudi Wibisono

0 comments :
Post a Comment