Transaction Management (part2) – Concurrency Control
Apa itu Concurrency Control (CC)?
Proses pengelolaan transaksi yang simultan pada database tanpa mengganggu transaksi satu dengan yang lain. CC dibutuhkan untuk mencegah gangguan ketika dua atau lebih pengguna mengakses database secara bersamaan dan setidaknya satu transaksi sedang memperbarui data sehingga data tetap baik. Meskipun dua transaksi mungkin benar dengan sendirinya, dua transaksi bersamaan dapat menghasilkan hasil yang salah, maka itu diperlukan pemahaman CC ini.
Tiga contoh masalah potensial yang disebabkan adanya dua atau lebih transaksi jalan bersama:
- Masalah pembaruan hilang (Lost Update Problem).
- Masalah ketergantungan tidak terikat (Uncommitted dependency problem).
- Masalah analisis yang tidak konsisten (Inconsistent analysis problem).
Kita akan bahas masalah ini satu persatu.
Dari gambar diatas, dapatkah kamu melihat masalahnya?
Yap, perubahan yang dilakukan T2 hilang dikarenakan T1
Uncommitted Dependency Problem
Dari gambar diatas terlihat bahwa permasalah terjadi saat T3 sudah memulai operasi tetapi T4 melakukan rollback, dimana artinya T4 dibatalkan. Karena T3 sudah jalan, maka operasi yang sudah dilakukan oleh T4 seakan-akan terus berjalan karena T3 sudah membaca data yang diubah oleh T4.
Inconsistent Analysis Problem
Apakah kalian dapat melihat permasalah pada gambar berikut ini?
Ya. Kalau dilihat T5 dan T6 melakukan operasi yang berbeda. T5 banyak melakukan perubahan data. T6 melakukan read dan sum. Tetapi karena kedua transaksi ini dijalankan secara simultan, maka terjadi permasalahan.