TRANSAKSI
Transaksi bertujuan untuk mencegah dari kehilangan ataupun
kerusakan data. Sebuah transaksi berpeluang untuk mengganggu integritas basis
data yang dapat membuat kondisi/hubungan antar data tidak seperti seharusnya.
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.
Dua Operasi
Penting Transaksi
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 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.
Level
Isolasi Transaksi
Isolasi Transaksi merupakan tingkatan pengaruh antar
transaksi yang dipengaruhi karena kinerja RDMS. Didalam transaksi terdapat 3
hal yang harus dicegah, antara lain adalah:
Dirty Read -> Transaksi membaca data dari hasil transaksi
lainnya yang gagal. Kedua transaksi tersebut berjalan bersamaan.
Nonrepeatable Read -> Transaksi membaca ulang data yang
telah di baca sebelumnya karena data tersebut telah dimodifikasi oleh transaksi
lainnya.
Phantom Read -> Transaksi membaca sebuah data yang telah
hilang akibat dari transaksi yang lainnya.
Untuk mencegah terjadinya 3 hal yang diatas, maka pada
Oracle terdapat 2 level isolasi yang dapat diimplementasika, antara lain :
Read Commit -> Transaksi hanya dapat melihat perubahan
data setelah transaksi lain telah commit
pada data tersebut.
Serializable -> evel isolasi yang menyediakan isolasi
transaksi yang paling ketat. Level ini mengemulasikan eksekusi transaksi secara serial, menjadikan
transaksi dieksekusi satu setelah yang lainnya,seperti secara serial, bukan secara bersamaan (pararel).
Locking
Protocol
Looking adalah Jika sebuah transaksi ingin record/resource
tidak berubah dalam waktu tertentu maka dia meminta lock. Ada dua macam lock, antara lain :
EXCLUSIVE LOCK
(X-LOCK) -> transaksi tersebut dapat melakukan perubahan dan pembacaan
terhadap data tersebut. Jika transaksi A memegang Xlock pada sebuah record,
maka permintaan lock (X,S) pada record yang sama harus diabaikan. Transaksi
yang ingin mengupdate harus mempunyai X-Lock.
SHARED LOCK (S-LOCK) -> transaksi tersebut hanya bisa
melakukan pembacaan. Jika transaksi A memegang Slock pada record R maka:
Permintaan Xlock transaksi lain pada R ditolak sedangkan Permintaan Slock
transaksi lain pada R diterima.
X-Lock dan S-Lock dipegang sampai transaksi selesain(Commit
dan Rollback). Untuk shared lock, dapat dimiliki oleh beberapa transaksi dalam
satu waktu, namun untuk exclusive lock, hanya dapat dimiliki oleh satu
transaksi pada satu waktu.
Deadlock