Transaksi Dalam Sistem Basis Data
1 Pengertian
Transaksi
adalah satu atau beberapa aktivitas program untuk mengakses ataupun mengubah
isi data. Transkasi harus dilakukan secara utuh atau tidak sama sekali. JIka ada transaksi yang
dilakukan tidak sampai beres maka akan terjadi inkonsistensi basis data.
Tujuan
transaksi yaitu untuk mencegah hilang / rusaknya data. Transaksi juga
berpotensi mengganggu integritas basis data. Berikut sifat-sifat transaksi agar
integritas data terjaga:
1 1. Atomicity : semua operasi dalam transaksi dapat
dikerjakan seluruhnya atau tidak sama sekali
2 2. Consistency : menjamin data tetap kosisten saat
transaksi berakhir
3. Isolation : jika terdapat sejumlah transaksi
pada suatu system basis data, maka semua transaksi tersebut hars dapat dimulai
dan bias diakhiri
4. Durability : Jika system mati, maka perubahan
data setelah transaksi harus bisa bertahan
2Operasi Transaksi Pada Oracle
1. Commit, penanda ransaksi telah selesai dilakukan,
Contoh:
- Pertama kita buat Tabel seperti dibawah:
- Lalu kita isi data(buat juga sequence nya):
- untuk
mencoba penerapan commit , kita buka dua buah jendela SQL Command Line, untuk
membedakan nya ganti warna latar jendela kedua seperti dibawah, pastikan juga
keduanya tersambung ke user yang sama (missal : latihan) ;
- Jika sudah, kita tampilkan data yang kita buat tadi
- Terdapat
perbedaan diantara kedua jendela diatas, pada SQL Command Line hitam data sudah
bertambah satu, tetapi pada jendela SQL Command Line abu belum.
Hal ini disebabkan
transaksi pemasukkan data SQL Command Line hitam belum terselesaikan, untuk
menyelesaikannya kita harus menyatakan bahwa transaksi tersebut commit.
- Sekarang
kita ketikkan perintah berikut pada SQL Command Line hitam:
2. Savepoint, sebuah titik dimana kita telah
selesai melakukan satu atau beberapa transaksi. Berfungsi sebagai checkpoint untuk dipanggil oleh perintah
rollback. Format perintah membuat savepoint adalah
SAVEPOINT [NAMA_SAVE_POINT];
Berikut contoh membuat
savepoint:
- tampilkan isi tabel latihan_transaksi di
jendela SQL Command Line hitam:
- sekarang
buat savepoint untuk menyimpan kondisi data saat ini:
3. Rollback, perintah untuk mengulang transaksi
(biasanya karena ada kegagalan). Format penulisan perintah rollback adalah
sebagi berikut:
ROLLBACK;
Atau
ROLLBACK TO SAVEPOINT [nama_save_point];
Contoh:
Setelah kita membuat savepoint, kita bisa
memanggil lagi savepoint tersebut. Untuk contoh kita hapus dulu isi data lalu
kita coba tampilkan sebagai berikut:
-
Sekarang
kita rollback data ke savepoint coba dan tampilkan isi tabel latihan_transaksi;
-
Data
kembali ke keadaan savepoint
1.
Isolasi Transaksi
Dalam
transaksi pada sistem basis data ada 3 hal yang harus dicegah:
1.
Dirty read
Dua transaksi berjalan bersama, dan salah satu transaksi membaca hasil
transaksi lainnya yang gagal
2.
Non-repeatable read
Transaksi membaca ulang data yang telah dibaca sebelumnya karena telah
diubah oleh transaksi lain yang berjalan bersamaan.
3.
Phantom read
Transaksi
membaca data yang telah hilang oleh transaksi lainnya
Untuk
mencegah 3 hal di atas, Oracle memiliki 2 level isolasi, yaitu:
1.
Read Command
Transaksi hanya bisa membaca data yang telah selesai di eksekusi (commit) oleh transaksi lain.
2.
Serializable (mencegah Phantom read)
Proses transaksi di-serial-kan, artinya transaksi satu akan berjalan
setelah transaaksi lainnya selesai. Tetapi aplikasi yang menerapkan level
isolasi ini harus bersedia mengulangi transaksi akibat kegagalan penserialan
transaksi.
Pada level ini, query SELECT hanya melihat data yang telah di COMMIT
sebelum transaksi dimulai.
Pada level ini juga jika transaksi mengandun DML (Data Manipulation
Language) yang mencoba merubah data yang mungkin sudah dirubah pada transaksi
lain yang belum di-commit maka perintah
DML tersebut akan gagal. Berikut Contoh format penerapan perintah serializable:
SET
TRANSACTION ISOLTION LEVEL SERIALIZABLE;
1.
Locking
Protocol
Locking berfungsi untuk menjaga integritas data. Ada 2
buah metode locking:
1.
Shared Lock (S-Lock)
Transaksi hanya bisa melakukan pembacaan. (dapat dimiliki oleh beberapa
transaksi dalam satu waktu.
2.
Exclusive Lock (X-Lock)
Transaksi bisa melakukan perubahan dan pembacaan terhadap data. (hanya
dapat dimiliki oleh satu transaksi pada satu waktu.
2.
Penguncian
Level Tabel
Berfungsi untuk mengunci suatu tabel untuk mencegah
perubahan atau penghapusan tabel oleh transaksi. Format penulisan perintah
penguncian tabel adalah:
LOCK TABLE [nama_tabel];
3.
Penguncian
Level Baris
Penguncian pada baris yang sedang digunakan oleh suatu
transaksi sampai transaksi tersebut selelsai dieksekusi(commit).Penguncian ini hanya berlaku untuk operasi UPDATE dan
DELETE.
4.
Dealock
Keadaan dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock
dilepas sebelum di mulai.(Yudi wibisono).
Comments
Post a Comment