Transaksi adalah operasi atau aksi
yang dilakukan program aplikasi untuk menghasilkan data. Tujuan dari transaksi
data adalaha untuk menjaga data dari kehilangan atau kerusakan.
Sifat-sifat yang dimiliki transaksi (biasa disingkat ACID), yaitu: 
- Atomicity, adalah transaksi yang dilakukan sekali dan sifatnya otomic all or nothing (seluruhnya atau tidak sama sekali).
- Consistency, dimana transaksi mempertahankan konsistensi data.
- Isolation, dimana transaksi terisolasi datu sama lain.
- Durability, setelah transaksi di-commit, maka perubahan yang diakibatan tidak akan hilang atau tahan lama sekalipun ada kegagalan sistem.
Operasi Transakasi: 
- Commit, yaitu memberi tanda bahwa transaksi telah selesai dilaksanakan (benar dan berhasil).
- Rollback, yaitu memberi tanda bahwa transaksi mengalami kegagalan dan harus diulang.
Save Point
Save point adalah titik aman ketika kita telah menyelesaikan satu atau beberapa transaksi. Jika dalam sebuah game, save point sama dengan check point.
Saat kita ingin rollback atau terdapat transaksi yang
gagal, transaksi dimulai kembali dari save point yang telah kita buat, tidak
dari awal kembali. Itulah fungsi dari save point. 
Membuat save point:
SAVEPOINT [nama
save point];
Membuat rollback:
ROLLBACK TO
[nama save point];
Isolasi
Transaksi
Terdapat tiga hal yang harus dicegah dalam transaksi database:
- Dirty Read, yaitu transaksi membaca data dari hasil transaksi lainnya yang gagal dan kedua transaksi tersebut berjalan secara bersamaan.
- Non-Repeatable Read, yaitu transaksi membaca ulang data yang telah dibaca sebelumnya karena data tersebut telah dimodifikasi oleh transaksi lainnya.
- Phantom Read, yaitu transaksi membaca sebuah data yang telah hilang akibat dari transaksi yang lainnya.
Dalam Oracle, terdapat dua level untuk mencegah tiga hal
tersebut, yaitu:
- Read Commited, yaitu transaksi hanya melihat perubahan data setelah transaksi lain telah commit pada data tersebut.
- Serializable, yaitu level isolasi yang menyediakan isolasi transaksi yang paling ketat.
Berikut perintah untuk mengaplikasikan level serializable :
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Locking
Protocol
Terdapat dua buah metode Locking pada transaksi database:
- Shared Lock (S-LOCK), yaitu transaksi hanya dapat melakukan pembacaan.
- Exclusive Lock (X-LOCK), yaitu transaksi dapat melakukan pembacaan dan perubahan.
Penguncian
Level Tabel
Penguncian level tabel ini berfungsi mengunci suatu tabel untuk mencegah perubahan atau penghapusan tabel selama ada transaksi yang menggunakan tabel tersebut.
Perintah yang digunakan:
LOCK TABLE
[nama tabel];
Penguncian
Level Baris
Penguncian yang dilakukan pada baris yang sedang digunakan oleh suatu transaksi sampai transaksi tersebut selesai dilakukan.
Deadlock
Deadlock adalah situasi dimana dua atau lebih transaksi dalam kondisi wait-state (menunggu lock dilepas).
 
Tidak ada komentar:
Posting Komentar