jadilah diri sendiri untuk menjadi yang terbaik

Senin, 21 April 2014

TRANSAKSI PADA DATABASE

TRANSAKSI

Apa itu transaksi ?
Transaksi adalah satu atau beberapa aksi program aplikasi yang mengakses/mengubah isi basis data.
Transaksi merupakan bagian dari pengeksekusian sebuah program yang melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian perubahan data.
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. Atomicityyaitu semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama sekali.
  2. Consistency, yaitu eksekusi transaksi harus dapat menjamin data tetap konsisten setelah transaksi berakhir.
  3. Isolation, yaitu 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, yaitu perubahan data yang terjadi setelah sebuah transaksi berakhir dengan baik, harus dapat bertahan bahkan jika seandainya sistem mati.

Ada dua Operasi Penting pada Transaksi database 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.

Selain adanya commit dan rollback , dalam transaksi database juga terdapat istilah Save Point. Save Point secara sederhana merupakan sebuah titik aman, dimana kita telah menyelesaiakan satu atau beberapa transaksi. Fungsi dari save point yaitu pada saat kita akan melakukan rollback atau ada transaksi yang gagal, transaksi tidak berjalan dari awal kembali, tetapi dari save poin yang telah kita buat.

Status-status yang dapat dicapai oleh sebuah transaksi sejak mulai dilaksanakan hingga selesai atau batal adalah :

  1. Aktif (Active), merupakan status awal (initial state) sebuah transaksi yang menunjukkan transaksi tersebut masih dieksekusi.
  2. Berhasil Sebagian (Partially Committed), yaitu keadaan yang dicapai transaksi tepat pada saat operasi terakhir dalam transaksi selesai dikerjakan.
  3. Gagal (Failed), merupakan keadaan dimana sebuah transaksi terhenti pengeksekusiannya sebelum tuntas sama sekali.
  4. Batal (Aborted), yaitu keadaan dimana sebuah transaksi dianggap tidak/belum dikerjakan yang tentu dengan terlebih dahulu diawali dengan mengembalikan semua data yang telah diubah ke nilai-nilai semula. (yang menjadi tanggung jawab DBMS).
  5. Berhasil Sempurna (Committed), yaitu keadaan dimana transaksi telah dinyatakan berhasil dikerjakan seluruhnya dan basis data telah merefleksikan perubahan-perubahan yang memang diinginkan transaksi.


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:


  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 -> 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 :


  1. 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.
  2. 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 selesai (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

Deadlock adalah Situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu dimana kondisi sumberdaya sedang tidak sibuk. Salah satu cara untuk  memecahkan deadlokk adalah salah satu harus dipaksa rollback.

Tidak ada komentar:

Posting Komentar