VClass 7 : Pretest Masalah Konkurensi
Terdapat beberapa masalah umum yang muncul pada konkurensi yaitu:
· Lost update problem (Masalah hilangnya data yang diupdate).
· Uncommited dependency problem / dirty real (Masalah kebergantungan terhadap transaksi yang belum commit).
· Inconsistent anaisys problem (masalah analisa yang tidak konsisten).
Jelas ke 3 masalah tersebut secara singkat
Jawab :
· Lost update problem (Masalah hilangnya data yang diupdate)
Lost update / kehilangan modifikasi , adalah permasalahan yang akan timbul apabila pada saat proses update berjalan dengan sukses kemudian ditindih oleh operasi update yang dilakukan oleh user yang lain. Berikut adalah contoh permasalahan concurrency Lost update :
T1
|
T2
|
elf (x)
| |
t1
|
begin_transaction
|
12
| |
t2
|
read elf (x)
|
begin_transaction
|
12
|
t3
|
elf (x) = elf (x) + 1
|
read elf (x)
|
12
|
t4
|
write elf (x)
|
elf (x) = elf (x) + 3
|
13
|
t5
|
Commit
|
write elf (x)
|
15
|
t6
|
commit
|
15
|
Penjelasan table :
1. Pada transaksi satu (T1), transaksi dimulai (begin transaction) pada waktu t1 dengan nilai transaksi awal adalah 12, sedangkan transaksi dua (T2) belum memulai transaksi (begin transaction) pada saat t1. Sehingga nilai variable elf (x) = 12.
2. Pada waktu t2, transaksi satu (T1) membaca variable elf (x) [read elf (x)], sedangkan transaksi dua (T2) baru memulai transaksi. Nilai variable elf (x) tetap 12.
3. Pada waktu t3, T1 melakukan operasi penjumlahan pada variable elf(x) [elf (x) = elf (x) + 1]. Sedangkan T2 membaca variable elf (x). Nilai variable elf (x) masih 12 karena belum dilakukan perintah write/mencetak langsung ke database.
4. Pada saat t4, T1 melakukan operasi write elf(x) , sedangkan T2 melakukan operasi penjumlahan [elf (x) = elf (x) + 3]. Nilai variable elf(x) berubah menjadi 13, nilai 13 berasal dari operasi T1 [elf (x) = elf (x) + 1] yang dilakukan pada waktu t3 dan dicetak pada t4.
5. Pada saat t5 , T1 melakukan perintah commit yaitu untuk emnyimpan. Sedangkan T2 melakukan perintah [write elf (x)]. Sehingga nilai variable elf(x) adalah 15 yang berasal dari operasi yang dilakukan T2 pada t4.
6. Pada waktu t6, T1 sudah tidak melakukan transaksi. Sedangkan T2 melakukan transaksi commit (menyimpan. Nilai variable elf (x) tetap 15.
· Uncommited dependency problem / dirty real (Masalah kebergantungan terhadap transaksi yang belum commit).
Masalah muncul jika transaksi diizinkan retrieve record-record yang telah diubah nilainya oleh transaksi lain yang belum terekam, sehingga ada kemungkinan perubahan tersebut akan di-undo (redo), dikenal dengan dirty read problem.
Transaksi A dependent ke uncommitted change pada saat w2
Transaksi A
|
Waktu
|
Transaksi B
|
W1
|
update t set dept_id = 1;
| |
select * from t;
|
W2
| |
W3
|
rollback;
|
Transaksi A dependent ke uncommitted change pada saat w2
Transaksi A
|
Waktu
|
Transaksi B
|
W1
|
update t set dept_id = 1;
| |
update t set dept_id = 1;
|
W2
| |
W3
|
rollback;
|
· Inconsistent anaisys problem (masalah analisa yang tidak konsisten).
Terjadi ketika transaksi pertama membaca beberapa nilai tetapi transaksi kedua melakukan perubahan terhadap nilai tersebut selama eksekusi transaksi pertama berlangsung. Hal ini disebut dengan nonrepeatable or fuzzy read.

Komentar
Posting Komentar