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


                   -  Tampilkan data di SQL Command Line hitam dan abu


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


             -  Lalu kita tampilkan lagi data di SQL Command Line abu:



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

Popular posts from this blog

Operasi dan Gerbang Logika (LOGIKA INFORMATIKA)

Respirometer Sederhana

Kumpulan Peribahasa & Pepatah JAWA