Oleh: denysutani | November 14, 2008

Concurrency di DB2

Fenomena multi transaksi

Dibawah ini merupakan kesalahan yang dapat terjadi untuk sebuah aplikasi yang bersifat multi transaksi.
– lost update : jika ada 2 buah transaksi yang sedang membaca sebuah data dan kemudian mengupdatenya, maka salah satu update akan hilang / tertimpa.
– dirty read/ uncommited read : jika transaksi 1 mengupdate sebuah data dan kemudian transaksi 2 membaca data tersebut, maka jika transaksi 1 meroll back update tersebut, maka transaksi 2 akan melihat data yang salah.
– nonrepeatable read : jika transaksi 1 membaca data, kemudian transaksi 2 mengupdate / menghapus data, maka transaksi 1 akan mendapatkan hasil yang berbeda ketika melakukan pembacaan ulang.
– phantom : jika transaksi 1 melakukan pencarian dengan menggunakan key tertentu, kemudian transaksi 2 melakukan update data yang berkaitan dengan key tersebut, maka bila transaksi 1 melakukan pencarian ulang, akan didapatkan hasil yang berbeda

Isolation Level

Isolation merupakan salah 1 cara untuk mencegah terjadinya fenomena kesalahan yang disebutkan diatas.
– repeatable read : jika transaksi 1 melakukan pembacaan terhadap 1000 data, maka transaksi lain akan digagalkan untuk melakukan transaksi terhadap 1000 data tersebut walaupun transaksi 1 hanya ingin mengambil 10 data. Isolation level ini mencegah lost update, dirty read, non repeatable read dan phantom.
– read stability : jika transaksi 1 melakukan pembacaan terhadap 1000 data dan hanya ingin mengambil 10 data maka transaksi lain akan diperbolehkan untuk melakukan transaksi terhadap 990 data lainnya.
Isolation level ini mencegah lost update, dirty read, non repeatable read.
– cursor stability : isolation level ini hanya akan melock data yang ditunjuk oleh cursor. Mencegah dirty read.
– uncommitted read : isolation level ini hanya akan melock data jika ada transaksi lain yang ingin mendrop/ alter table

Locking

2 tipe lock
– share lock : dengan lock ini, transaksi lain dapat membaca data, namun tidak dapat melakukan perubahan sampai lock dilepas. Lock hanya dapat diberikan jika belum ada yang memegang. Lock ini diberikan jika ada yang melakukan pembacaan, sehingga menghindari perubahan data selama pembacaan
– exclusive lock : dengan lock ini, transaksi lain tidak dapat melakukan transaksi terhadap data. Lock ini diberikan jika ada yang melakukan update/ delete / insert.

Locking di DB2

– Lock compatible : jika transaksi 1 melock data, kemudian transaksi 2 ingin melock data tersebut, maka DB2 akan melihat kompatibilitasnya. Jika compatible maka lock akan diberikan ke transaksi 2, jika tidak transaksi 2 harus menunggu.
– Lock conversion : lock akan diubah secara otomatis jika berubah menjadi lebih ketat seperti dari shared lock ke exclusive lock
– Lock escalation : jika transaksi 1 sudah melakukan banyak lock pada row dan melebihi maxlock yang diperbolehkan, maka lock dapat dieskalasi menjadi lock table. Hal ini berguna agar tidak menghabiskan memory.

Semoga bermanfaat.


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Kategori

%d blogger menyukai ini: