Concurrency dan Locking

Transaksi

Sebuah transaksi terdiri dari satu atau lebih statement SQL, dimana, ketika dijalankan dianggap sebagai sebuah unit tunggal, bahwa jika 1 statement transaksi gagal, maka seluruh transaksi akan gagal. Transaksi diakhiri oleh statement COMMIT yang berarti awal dari transaksi baru.

Concurrency

Concurrency menunjukkan bahwa beberapa user dapat bekerja di waktu yang sama pada database object yang sama. DB2 didesain sebagai multi-user database. Akses ke data harus dikoordinasikan dengan benar dan transparan menggunakan mekanisme yang memastikan integritas data dan konsistensinya.

Konsep locking dan concurreny saling berhubungan. Locking secara temporer menghentikan aplikasi lain untuk menjalankan operasinya sampai operasi lain selesai. Makin besar penerapan locking dalam sebuah sistem, makin kecil kemungkinan concurrency. Sebaliknya, makin kecil penerapan locking dalam sebuah sistem, makin besar kemungkinan concurrency.

Ada 2 tipe dasar locking :

  • Share lock : dipakai ketika sebuah aplikasi ingin membaca dan mencegah apkikasi lain untuk meng-update baris yang sama.
  • Exclusive Lock : dipakai ketika senuah aplikasi melakukan update, insert, atau delete sebuah row.

Masalah yang dapat terjadi tanpa kontrol concurrency :

1. Lost Update
Terjadi bila ada 2 transaksi update yang dilakukan pada baris yang sama dan pada waktu yang sama.
2. Uncommited Read
Disebut juga dirty read, memungkinkan sebuah aplikasi membaca informasi yang belum dicommit, sehingga mendapatkan informasi yang tidak akurat. Misal, disaat yang bersamaan, user A sedang meng-update data X dan belum melakukan commit, sedangkan user B sedang melihat data X.
3. Non-Repeatable Read
Menunjukkan bahwa user tidak bisa mendapatkan hasil yang sama setelah membaca data yang sama di operasi yang sama. Non-repeatable read memungkinkan data yang sebelumnya ada menjadi hilang/tidak ada.
4. Phantom Read
Sama seperti non-repeatable read, tapi yang terjadi adalah muncul data baru yang sebelumnya tidak ada.

Level Isolasi

DB2 menyediakan beberapa level proteksi untuk mengisolasi data, antara lain :
1. Uncommited Read
Disebut juga sebagai dirty read adalah level isolasi terendah.
Masalah yang dicegah :
a. Lost of update
Masalah yang masih ada :
a. Uncommited read
b. Non-repeatable read
c. Phantom read

2. Cursor Stability
CS adalah level isolasi default.
Masalah yang dicegah :
a. Lost of update
b. Uncommited read
Masalah yang masih ada :
a. Non-repeatable read
b. Phantom read

3. Read Stability
RS adalah level isolasi moderate.
a. Lost of update
b. Uncommited read
c. Non-repeatable read
Masalah yang masih ada :
a. Phantom read

4. Repeatable Read
RR adalah level isolasi tertinggi.
a. Lost of update
b. Uncommited read
c. Non-repeatable read
d. Phantom read
Masalah yang masih ada :
Tidak ada

Tinggalkan komentar