TRANSAKSI
Halo, setelah kemarin meresume materi Instalasi Oracel dan NetBeans sekarang saya akan meresume materi Transaksi pada Sistem Basis Data.
Apa itu transakasi?
Transaksi adalah satu atau beberapa aksi yag dilakukan program aplikasi untuk mengakes atau mengubah isi basis data. Transaksi juga merupakan bagian dari pengeksekusian sebuah program yang melakukan pengksesan basis dara bahkan juga melakukan serangkaian perubaan data. Transaksi harus dilakukan secara utuh atau tidak sama sekali, tidak boeh aa transaksi yag dikerjakan sebagian.
Apa tujuan transaksi?
Transaksi berujuan untuk mencegah dari kehilangan ataupun kerusakan data. Sebuah transaks berpeluang untuk mengganggu integritas basis data yang dapat memmbuat kondisi/hubungan antar data tidak seperti seharusanya.
Sifat-sifat transaksi:
- Auotimicity, dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama 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.
Operasi Transaksi Pada Oracle
-Commit, penanda transki telah dilakukan. Contoh:
Kita buat talenya dulu
Kita buat isi berserta seqencenya
Setelah datanya dimasukan, kemudian kita login dengan 2 command promp tetapi dengan user yang sama dan warna background yang berbeda dan select table transaksinya, seperti contoh di bawah ini
setelah itu kita masukan data baru ke command line berwarna hitam
setelah itu lihat kita select table transaksi di kedua command line, lihat apa yang terjadi. pada command hitam sudah ada data huruf F, sedangkan pada warna abu belum ada.
agar data pada command line biru muncul hurf F. kita ketikan commit pada cmd hitam.
Kemudian select data transaksi di cmd abu, maka sudah ada F
- SAVE POINT
Save Point secara sederhana merupakan sebuah titik aman, dimana kita telah menyelesaiakan satu atau beberapa transaksi. 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];
mari kta buat savepointnya
setelah itu kita masukan data huruf G ke dalam tabel transaksi
kemudian select transaksinya
disinilah penggunaan savepoint, sekarang kita masukan rollback to [nama_savepoin] kemudian tampilkan datanya, maka aan keluar data sebelum dimasukan huruf G
perhatikan datanya hanya sampai F
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
- Read Commited Transaksi hanya dapat melihat perubahan data setelah transaksi lain telah commit pada data tersebut. (Seperti dalam contoh commit)
- Serializable, Adalah level isolasi yang menyediakan isolasi transaksi yang paling ketat. Level ini mengemulasikan eksekusi transaksi secara serial, menjadikan transaksi dieksekusi satusetelah yang lainnya,seperti secara serial, bukan secara bersamaan (pararel). Tetapiaplikasi yang menggunakan level isolasi ini harus bersedia untuk mengulangi transaksidikarenakan kegagalan pengserialan transaksi. Saat transaksi berada pada levelserializable, sebuah query SELECT hanya melihat data yang di COMMIT sebelumtransaksi di mulai; transaksi tersebut tidak akan pernah melihat baik data yang belum diCOMMIT atau perubahan data yang terjadi selama eksekusi transaksi oleh transaksi lainyang berjalan pada waktu bersamaan (e.g. saat transaksi ini berjalan, ada transaksi lainyang melakukan COMMIT pada data). Jika pada transaksi dengan level isolasoSerializable mengandung DML (Data Manipulatin Language) yang mencoba untukmeng-update suatu data yang mungkin sudah di update pada sebuah transaksi yang belumdi commit pada awal transaksi Serializable, maka perintah DML tersebut akan gagal.Untuk mengaplikasikan level isolasi Serializable, adalah dengan menggunakan perintah :
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Isolai level ini mencegah terjadinya Phantom Read.
Locking Protocol
Penguncian Level Tabel
Penguncian yang berfungsi untuk mengunci suatu tabel untuk mencegah perubahan atau penghapusan tabel selama ada transaksi yang menggunakan tabel tersebut. Untuk melakukan perintah penguncian tabel, adalah sebagai berikut.
LOCK TABLE [nama tabel];
Penguncian Level Baris
Penguncian yang dilakukan pada baris (ROW) yang sedang digunakan oleh suatu transaksi
sampai transaksi tersebut selesai dilakukan. Penguncian level baris hanya berlaku untuk operasi
UPDATE dan DELETE.
Deadlock
Keadaan dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepas sebelum di mulai.(Yudi wibisono)