3 Masalah akibat Concurrency:
• Masalah kehilangan modifikasi
(Lost Updates Problem)
>>Update yang dilakukan oleh user pertama diubah oleh user
yang lain.
>>Contoh diatas menerangkan hilangnya modifikasi yang
dilakukan oleh T2. Kehilangan modifikasi ini dapat diatasi dengan mencegah T1
melakukan pembacaan data sebelum perubahan T2 selesai dilaksanakan.
• Masalah modifikasi sementara (Uncommitted
Dependency Problem)
>>Masalah modifikasi sementara terjadi jika satu transaksi
(transaksi pertama) membaca hasil dari transaksi lainnya (transaksi kedua)
sebelum transaksi kedua dinyatakan committed.
Biasa dikenal dengan dirty read problem.
>>Contoh transaksi T4 merubah balx menjadi £200 tetapi
digagalkan, sehingga balx harus dikembalikan ke nilai awal sebelum transaksi
yaitu £100. Sedangkan transaksi T3 membaca nilai hasil modifikasi tadi yaitu,
balx (£200) dan menguranginya dengan £10, sehingga memperoleh nilai akhir £190,
yang seharusnya £90.
Masalah tersebut dapat
dihindari Problem dengan mencegah T3 membaca balx sebelum T4 dinyatakan committed atau abort
• Masalah
analisa yang tidak konsisten (Inconsistent Analysis Problem)
>>Terjadi ketika transaksi pertama
membaca beberapa nilai tetapi transaksi kedua melakukan perubahan terhadap
nilai tersebut selama eksekusi transaksi pertama berlangsung.
Contoh transaksi T6 menjumlahkan variable balx
(£100), baly (£50), dan balz (£25). Pada saat yang hampir bersamaan transaksi
T5 memindahkan £10 dari balx ke balz, sehingga transaksi T6 mendapatkan hasil
akhir yang salah (yaitu kelebihan £10).
>>Hal ini disebut dengan nonrepeatable ( or fuzzy) read.
Masalah
tersebut dapat dihindari dengan mencegah transaksi T6 membaca balx dan balz
sebelum transaksi T5 lengkap di-update.
Tidak ada komentar:
Posting Komentar