Rabu, 23 April 2014

TRANSAKSI - Sistem Basis Data


A. Transaksi

Pengertian : satu atau beberapa aksi yang dilakukan program aplikasi untuk mengakses atau mengubah isi basis data.
Tujuan -> mencegah dari kehilangan ataupun kerusakan data.
Suatu transaksi berpeluang menggangu integritas data (kebenaran/keakuratan data), maka dari itu setiap transaksi harus memiliki sifat-sifat sebagai berikut :

  1. Atomicity, dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama sekali, untuk menghindari inkonsistensi data.
  2. Consistency, dimana eksekusi transaksi harus dapat menjamin data tetap konsisten setelah transaksi berakhir.
  3.  Isolation, dimana ada banyak transaksi yang dilaksanakan bersamaan dan harus dapat dimulai dan bisa berakhir secara bersamaan.
  4. Durability, dimana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan baik, harus dapat bertahan bahkan jika seandainya sistem mati.


B. Operasi Transaksi Pada Oracle

  1. Commit -> menandakan bahwa transaksi telah selesai dilaksanakan.
  2. Rollback -> memberitahukan bahwa transaksi harus diulang karena adanya suatu kegagalan.


C. Save Point

Pengertian : sebuah titik aman dimana kita telah menyelesaikan satu atau beberapa transaksi.
Fungsi -> jika ada transaksi yang dicancel atau gagal, transaksi tidak berjalan dari awal kembali, tetapi dari save poin yang telah kita buat.
Cara membuat save point:
SAVEPOINT[nama save point];
Setelah save point dibuat, kita dapat rollback ke save point tersebut dengan cara:
ROLLBACK TO[nama save point];

D. Isolasi Transaksi

Ada 3 hal yang harus dicegah dalam transaksi database :

  1. Dirty Read : Transaksi membaca data dari hasil transaksi lainnya yang gagal. Kedua transaksi tersebut berjalan bersamaan.
  2. Non-Repeatable Read : Transaksi membaca ulang data yang telah di baca sebelumnya karena data tersebut telah di modifikasi oleh transaksi lainnya.
  3. Phantom Read : Transaksi membaca sebuah data yang telah hilang akibat dari transaksi yang lainnya.


Ada 2 level isolasi untuk mencegah 3 hal diatas :

  1. Read Commited : Transaksi hanya dapat melihat perubahan data setelah transaksi lain telah commit pada data tersebut.
  2. Serializable : Transaksi dieksekusi satu setelah yang lainnya,seperti secara serial, bukan secara bersamaan (pararel). Saat transaksi berada pada level serializable, sebuah query SELECT hanya melihat data yang di COMMIT sebelum transaksi di mulai.

Perintah untuk mengaplikasikan level isolasi Serializable :
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Ket : Isolasi level ini mencegah terjadinya Phantom Read.

E. Locking Protokol

Fungsi -> menjaga integritas data.
Ada 2 metode locking :

  1. Shared Lock (S-LOCK), jika transaksi memiliki shared lock pada suatu data, transaksi tersebut hanya bisa melakukan pembacaan.
  2. Exclusive Lock (X-LOCK), bagi transaksi yang memiliki exclusive lock pada suatu data, transaksi tersebut dapat melakukan perubahan dan pembacaan terhadap data tersebut.

Ket : Untuk shared lock, dapat dimiliki oleh beberapa transaksi dalam satu waktu, namun untuk exclusive lock, hanya dapat dimiliki oleh satu transaksi pada satu waktu.

F. Penguncian Level Tabel

Fungsi -> mengunci suatu table untuk mencegah perubahan atau penghapusan tabel selama ada transaksi yang menggunakan tabel tersebut.
LOCK TABLE [nama tabel];

G. Penguncian Level Baris

- Penguncian yang dilakukan pada baris (ROW) yang sedang digunakan oleh suatu transaksi sampai transaksi tersebut selesai dilakukan.
- Berlaku untuk operasi UPDATE dan DELETE.

H. Deadlock
Merupakan situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu Lock dilepas sebelum di mulai.


Tidak ada komentar:

Posting Komentar