Transaksi
ai sahabat kali ini saya akan menjelaskan apa itu transaksi adalah satu atau beberapa aksi yang dilakukan program aplikasi untuk mengakses atau mengubah isi basis data.
Tujuan Transaksi
Melindungi database dari kehilangan data dan kerusakan.
Contoh masalah:
- Sistem crash di tengah eksekusi program yang membuat database dalam state yang tidak diketahui
- Dua program yang mengakses data yang sama dijalankan bersamaan sehingga saling menggangu.
Sifat - sifat dari transaksi :
1. Atomicity, dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama sekali.
2. Consistency, dimana eksekusi transaksi harus dapat menjamin data tetap konsisten setelah transaksi berakhir.
3. 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.
4. Durability, dimana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan baik, harus dapat bertahan bahkan jika seandainya sistem mati.
OPERASI TRANSAKSI PADA ORACLE
Dua operasi penting dalam transaksi
COMMIT
memberi tanda bahwa transaksi telah selesai. Update dibuat permanen (bahkan jika setelah commit terjadi kegagalan system).
ROLLBACK
memberi tanda bahwa transaksi GAGAL. Semua update harus di-undo (bagaimana caranya?)
lihat lagi contoh
Berikut ini Contoh dari commit dan rollback
Pertama buat table dulu.
Kedua kita buat sequence dan kita masukkan data kedalam table
Nah sekarang kita cobain deh penerapan commit sama rollbacknya, kita buka dua buah jendela SQL Command Line dengan latar yang berbeda, seperti gambar dibawah ini:
Setelah itu kamu pastikan keduanya login dengan user yang sama, misalkan usernya itu Transaksi. Kalau udah, kita tampilkan dulu data yang tadi kita buat sebelumnya dikedua SQL Command Line tersebut.
Tampilan diatas belum ada perbedaannya kan, sekarang kita masukan data di SQL Command Line yang latarnya warna hitam.
Kalau sudah isi datanya kita tampilkan data yang ada di table tersebut di SQL Command Line yang berlatar
hitam
Dan kita juga tampilkan data yang ada di table tersebut di SQL Command Line yang berlatar abu-abu.
Kenapa bisa terjadi hal tersebut? Jawabannya adalah karena transaksi memasukkan data pada Command Line berlatar hitam belum sepenuhnya berakhir. Untuk menandakan bahwa proses memasukkan data tersebut telah berakhir dan sukses, maka kita perlu menyatakan bahwa transaksi tersebut telah commit.
Caranya itu dengan kita mengetikan perintah commit pada Command Line yang berlatar hitam, seperti gambar dibawah ini :
Setelah itu kita coba tampilkan data di Command Line yang berlatar abu-abu, pasti datanya sudah bertamabah seperti yang ada di Command Line yang hitam.
SAVE POINT
Save point dianalogikan seperti sebuah check point saat kita bermain game.
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];
ISOLASI TRANSAKSI
Dalam transaksi database, ada 3 hal yang harus dicegah yaitu.
· Dirty Read
Transaksi membaca data dari hasil transaksi lainnya yang gagal. Kedua transaksi tersebut berjalan bersamaan.
· Non-Repeatable Read
Transaksi membaca ulang data yang telah di baca sebelumnya karena data tersebut telah di modifikasi oleh transaksi lainnya.
· Phantom Read
Transaksi membaca sebuah data yang telah hilang akibat dari transaksi yang lainnya.
Untuk mencegah 3 hal tersebut, maka dalam Oracle terdapat 2 level isolasi yang dapat diimplementasikan, yaitu :
· Read Commited
Transaksi hanya dapat melihat perubahan data setelah transaksi lain telah commit pada data tersebut. (Seperti dalam contoh commit)
· Serializable
Untuk mengaplikasikan level isolasi Serializable, adalah dengan menggunakan perintah :
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Isolai level ini mencegah terjadinya Phantom Read.
sumber : Modul Praktikum Simbada 2014