Rabu, 25 November 2015

Tansaction and Concurrency


Concurrency adalah banyaknya transaksi yang dijalankan secara bersamaan dalam satu waktu.

Hampir semua DBMS adalah multiuser, sehingga berpeluang terjadinya inkonsistensi basis data. Maka perlu adanya pengendalian persaingan eksekusi transaksi (concurrency control).


Transaksi
: “Sebuah transaksi adalah unit eksekusi program yang mengakses dan mungkin mengubah beberapa item data”. Dalam Konsep transaksi di database harus di penuhi empat sifat database agar integritas database tetap terjaga. Adapun keempat sifat tersebut adalah:
·         Atomicity: Setiap transaksi harus dijamin untuk dapat sukses dalam melakukan aksinya atau jika gagal , maka tidak berpengaruh apapun terhadap database.
·         Consistency: Setiap transaksi adalah sebuah aksi kombinasi secara logikal dari sebuah state database yang konsisten ke state yang lain dengan tetap menjaga kekonsisten-an database tersebut.
·         Isolation: Meskipun ada beberapa transaksi yang berlangsung bersamaan, masing-masing transaksi tidak boleh mengetahui transaksi lain yang sedang berlangsung. Hasil transaksi sementara harus disembunyikan dari transaksi lain yang sedang berlangsung . (level transparansi transaksi dapat di set).
·         Durability: Setelah sebuah transaksi sukses dilakukan, perubahan-perubahan yang dibuatnya terhadap database bersifat permanen, bahkan jika terjadi kegagalan sistem sekalipun.


Data Consistency : Berarti bahwa user melihat data yang terdapat di database konsisten baik itu data yang telah di rubah olehnya sendiri maupun oleh user yang lain. Pada umumnya, basis data menerapkan beberapa bentuk data locking untuk menangani masalah yang berkaitan dengan concurrency, consistency dan integrity. Locks merupakan mekanisme yang dapat menjaga interaksi destruktif di antara beberapa transaksi yang mengakses resource yang sama. Berkaitan dengan level isolasi yang ada ANSI / ISO standard SQL (SQL92) mendefinsikan 4 level isolasi . Level isolasi didefinisikan sebagai derajat transparansi transaksi antara satu user dengan user yang sama pada pengaksesan data yang sama. Ada fenomena – fenomena tertentu yang harus di cegah selama eksekusi transaksi yang konkuren . 3 Fenomena yang harus di cegah adalah :


1. Dirty Reads : Sebuah transaksi membaca data yang telah di tulis oleh transaksi yang lain tetapi belum di commit oleh transaksi lain tersebut.

2. Non Repeatable Reads : Sebuah transaksi yang membaca kembali sebuah data dimana data tersebut sudah di rubah / di hapus oleh transaksi lain dan telah di commit.
3. Phantom Reads : Sebuah transaksi menjalankan kembali sebuah query dimana akan menemukan bahwa ada transaksi lain yang telah memasukkan record baru ke schema yang sedang di akses oleh transaksi tersebut, sehingga akan terlihat antara query yang pertama di lakukan dengan query yang kedua memberikan hasil eksekusi jumlah row yang berbeda .

Oracle memberikan pilihan kepada usernya untuk memilih 2 mode isolasi , yaitu : read commited dan serializable . Untuk mode read only oracle bukan bagian dari SQL92 sehingga dari tabel di atas read only tidak masuk ke level isolasi yang di tawarkan oleh SQL92 tetapi ditawarkan oleh oracle . Berikut penjelasan 3 level yang di sediakan oleh oracle padapenggunanya :


- Read Commited, Read commited merupakan level isolasi default dari oracle. Setiap query yang dieksekusi oleh suatu transaksi membaca hanya data yang telah di-commit, sebelum query (bukan transaksi) dimulai.Karena Oracle tidak mencegah dari data yang sedang di read oleh sebuah query di modifikasi oleh query / transaksi yang lain , sehingga kemungkinan data telah di rubah oleh transaksi yang lain bisa saja terjadi antara 2 eksekusi dari query tersebut.

- Serializable, Transaksi serializable membaca hanya perubahan yang telah dicommit pada saat transaksi dimulai, ditambah perubahan yang dibuat oleh transaksi itu sendiri melalui statemen insert, update, dan delete.
- Read Only,Transaksi read-only membaca hanya perubahan yang telah di-commit saat transaksi dimulai dan tidak memperbolehkan statemen insert, update, dan delete.

Level yang tertinggi dari 3 pilihan tersebut adalah ”serializable”. Hal ini di karenakan level ini memberikan level isolasi yang terbaik ketika banyak user mengakses data yang sama . Konsep serializable nampak sebagai sebuah urutan eksekusi secara serial , terurut berdasarkan transaksi yang terjadi. Cara mensetting level isolasi di oracle : (pilih salah satu) Ada 2 metode dalam mengeset level isolasi di oracle , yaitu :


- Pada level Transaksi (pada level ini hanya untuk mengeset sebuah transaksi)

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET TRANSACTION READ ONLY;
- Pada level Session (pada level ini akan berlaku pada seluruh transaksi yang dilakukan dan subsequent dari transaksi yang terjadi)
ALTER SESSION SET ISOLATION_LEVEL = READ COMMITTED
ALTER SESSION SET ISOLATION_LEVEL = SERIALIZABLE;

Dalam mengatur agar dalam pengaksesan resource data yang sama tidak saling terjadi interferensi .. maka oracle memberikan konsep locking . Oracle secara otomatis menentukan lock yang perlu saat mengeksekusi

SQL statement . Namun Oracle juga memperbolehkan user untuk mengeset lock sendiri secara manual. Ada 2 Mode lock yang terdapat pada oracle yaitu :
- Exclusive Mode, Mencegah resource yang sedang di pakai untuk di share . Mode lock ini di peroleh ketika akan memodifikasi data . Transaksi yang sudah me-lock data secara exclusive adalah transaksi yang berhak pula untuk melepaskan lock tersebut untuk kemudian di gunakan oleh transaksi yang lainnya .
- Share Mode, Mengijinkan resource yang berhubungan untuk di share , tergantung dari operasi yang terlibat di dalamnya . Multiple users yang sedang membaca data dapat men-share data tersebut , memegang lock dengan tipe share lcok untuk mencegah akses data secara concurrent oleh writer (seseorang yang membutuhkan exclusive lock). Beberapa transaksi mungkin akan membutuhkan share lock pada penggunaan resource yang sama .

Tidak ada komentar:

Posting Komentar

Cara Install Dual Boot Linux Mint dan Windows 10

Apa itu Dual Boot ? Dual Boot adalah bagaimana kita membuat Laptop/PC yang kita gunakan terpasang lebih dari ...