TRANSAKSI (DATABASE ORACLE)
Transaksi
adalah satu atau beberapa aksi yang dilakukan program aplikasi untuk mengakses
atau mengubah isi basis data. Harus dapat dikerjakan secara utuh atau tidak
sama sekali.
Untuk menjamin agar integritas dapat tetap terpelihara maka
setiap transaksi harus memiliki sifat-sifat:
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
Didalam transaksi, terdapat dua buah operasi untuk menjaga
integritas dan ketahanan data, diantaranya dengan melakukan operasi commit dan
rollback.
Commit berfungsi untuk menandakan bahwa transaksi telah selesai dilaksanakan.
Rollback berfungsi untuk memberitahukan bahwa
transaksi harus diulang karena adanya suatu kegagalan.
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.
LOCKING PROTOCOL
Pada transaksi database, dikenal istilah locking yang
berfungsi untuk menjaga integritas data. Terdapat dua buah metode locking yaitu
:
Shared Lock (S-LOCK)
Jika transaksi memiliki shared lock pada suatu data,
transaksi tersebut hanya bisa melakukan pembacaan.
Exclusive Lock (X-LOCK)
Bagi transaksi yang memiliki exclusive lock pada suatu data,
transaksi tersebut dapat melakukan perubahan dan pembacaan terhadap data
tersebut.
Untuk shared lock, dapat dimiliki oleh beberapa transaksi
dalam satu waktu, namun untuk exclusive lock, hanya dapat dimiliki oleh satu
transaksi pada satu waktu.
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
Merupakan situasi dimana dua atau lebih transaksi dalam
kondisi wait-state, satu sama lain menunggu Lock dilepas sebelum di mulai
Comments
Post a Comment