Selasa, 11 November 2014

RESUME TRANSAKSI (Sistem Basis Data)



TRANSAKSI
Transaksi adalah suatu aksi yang dilakukan program aplikasi untuk mengakses atau mengubah isi basis data. Transaksi merupakan bagian dari pengeksekusian sebuah program yang melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian perubahan data. Transaksi yang hanya dikerjakan sebagaian akan menyebabkan inkonsistensi basis data. 
Tujuan Transaksi adalah mencegah dari kehilangan atau kerusakan data. Untuk menjamin agar
  • Atomicity : Semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama sekali integritas dapat teta terpelihara maka setiap transaksi harus memiliki sifat – sifat:  
  • Consistency : Menjamin data tetap kosisten saat transaksi berakhir 
  • Isolation : Jika terdapat sejumlah transaksi pada suatu system basis data, maka semua transaksi tersebut harus dapat dimulai dan bias diakhiri 
  • Durability : Jika system mati, maka perubahan data setelah transaksi harus bisa bertahan
Status Transaksi  
  • Sukses–transaksi dikatakan commited dan database mencapai stata baru/stata berikutnya.
  • Gagal–transaksi dikatakan aborted, dan database harus dikembalikan ke stata tetap sebelum dilakukannya transaksi. Transaksi seperti ini disebut roll back atau undone. 
  • Transaksi yang committed tidak dapat digagalkan. Transaksi yang digagalkan akan dilakukan rollback yang dapat diproses ulang(restarted) diwaktu mendatang

Operasi Transaksi Pada Oracle
Dalam transaksi terdapat dua operasi penting  yang berfungsi untuk menjaga dan ketahanan data , yaitu Commit dan Rollback. Commit adalah memberi tanda bahwa transaksi telah selesai. Sedangkan Rollback adalah untuk menggunakan tanda bahwa transaksi gagal. Semua update harus di-undo.

Sebuah transaksi dapat menghasilkan dua kemungkinan:   
  1. Jika dilaksanakan lengkap seluruhnya, transaksi tersebut telah di commit dan basis data mencapai keadaan konsisten baru. 
  2. Jika transaksi tidak sukses, maka transaksi dibatalkan dan basis data dikembalikan ke keadaan konsisten sebelumnya (rollback).
Transaksi yang sudah di commit tidak dapat dibatalkan lagi.  Jika ada kesalahan, maka harus dilakukan transaksi lain yang membalik dampak transaksi sebelumnya.

SAVEPOINT
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];
Rollback, perintah untuk mengulang transaksi (biasanya karena ada kegagalan). Format   penulisan perintah rollback adalah sebagi berikut:
ROLLBACK;
Atau
ROLLBACK TO SAVEPOINT [nama_save_point];

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 :
  1. Dirty Read - Transaksi membaca data dari hasil transaksi lainnya yang gagal. Kedua transaksi tersebut berjalan bersamaan.
  2. Nonrepeatable Read - Transaksi membaca ulang data yang telah di baca sebelumnya karena data tersebut telah dimodifikasi oleh transaksi lainnya.
  3. 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 :
  1. Read Commit - Transaksi hanya dapat melihat perubahan data setelah transaksi lain telah commit  pada data tersebut.
  2. Serializable - level 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) 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;

Pada transaksi database, dikenal istilah locking yang berfungsi untuk menjaga integritas data. Terdapat dua buah metode locking yaitu :
-      Shared Lock (S-Lock)
Transaksi hanya bisa melakukan pembacaan. (dapat dimiliki oleh beberapa transaksi dalam satu waktu.
-      Exclusive Lock (X-Lock)
Transaksi bisa melakukan perubahan dan pembacaan terhadap data. (hanya dapat dimiliki oleh satu transaksi pada satu waktu.

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];

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.

Deadlock
Keadaan dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepas sebelum di mulai.