Senin, 21 April 2014

Transaksi

Transaksi

Transaksi adalah satu atau beberapa 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. DBMS yang kita gunakan harus menjamin bahwa setiap transaksi harus dapat dikerjakan secara utuh atau tidak sama sekali. Tidak boleh ada transaksi yang hanya dikerjakan sebagian, karena dapat menyebabkan inkonsistensi basis data.

Transaksi bertujuan unuk 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. Atomicity, dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama sekali.
  2. Consistency, dimana eksekusi transaksi harus dapat menjamin data tetap konsisten setelah transaksi berakhir.
  3. Isolation, 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, dimana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan baik, harus dapat bertahan bahkan jika seandainya sistem mati.


Dua Operasi Penting Transaksi

Didalam transaksi, terdapat dua buah operasi 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.


Save Point

Save Point secara sederhana merupakan sebuah titik aman, dimana kita telah menyelesaiakan satu atau beberapa transaksi. Save point dianalogikan seperti sebuah check point saat kita bermain game.
Fungsi dari save point adalah supaya pada saat kita ingin rollback atau ada transaksi yang gagal, transaksi tidak berjalan dari awal kembali, tetapi dari save poin yang telah kita buat.


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, anatra 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 selesain(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

Deadlok adalah Situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepaskan sebelum dapat memulai. Salah satu pecahkan deadlokk adalah salah satu harus dipaksa rollback.




Tidak ada komentar:

Posting Komentar