Kali ini akan dibahas tentang concurrency pada database, dimana concurrency adalah proses pengaturan operasi–operasi dalam banyak transaksi yang berjalan secara simultan pada database tanpa mengganggu operasi pada transaksi lainnya sehingga dapat menghasilkan data yang konsisten. Pada laporan akhir ini dibuatkan contoh masalah – masalah yang terkait oleh concurrency.
Tiga contoh masalah penting yang terkait oleh concurrency, yaitu masalah Lost-Update, masalah Uncommitted Dependency, dan masalah Inconsistent Analysis.

•    Lost Update

Penjelasan :
Transaksi T1 dan T2 mulai pada waktu yang hampir bersamaan, dan keduanya membaca saldo $100. T2 menambah balx $100 menjadi $200 dan menyimpan hasil perubahannya dalam database. Di sisi lain, transaksi T1 mengurangi copy dari balx $10 menjadi $90 dan menyimpan nilai ini dalam database, menimpa hasil update sebelumnya dan akhirnya menghilangkan $100 yang telah ditambahkan sebelumnya ke dalam saldo. Kehilangan update transaksi T2 dapat dihindari dengan mencegah T¬1 membaca nilai dari balx sampai update T2 telah selesai.

•    Masalah Uncommited Dependency (Dirty Read)
Penjelasan:
Transaksi T4 mengubah balx menjadi $200 namun T4 membatalkan transaksi sehingga balx harus dikembalikan ke nilai asalnya, yaitu $100. Namun, pada waktu itu, transaksi T3 telah membaca nilai baru balx ($200) dan menggunakan nilai ini sebagai dasar pengurangan $10, sehingga memberikan saldo yang keliru sebesar $190, yang seharusnya adalah $90.
Nilai balx yang dibaca T3 disebut dirty data, yang berasal dari nama alternatifnya, yaitu masalah dirty read. Alasan rollback ini tidaklah penting. Masalahnya adalah transaksinya gagal (error), mungkin mengurangi rekening yang salah. Efeknya adalah asumsi T3 yang menganggap update T4 telah berhasil dijalankan, meskipun selanjutnya perubahannya dibatalkan. Masalah ini dihindari dengan mencegah T3 membaca balx sampai keputusan telah dibuat, yaitu commit atau membatalkan efek T4.
Dua masalah di atas mengkonsentrasikan pada transaksi yang mengubah database dan campur tangan mereka bisa membuat database menjadi corrupt. Namun, transaksi yang hanya membaca database bisa juga memberikan hasil yang tidak akurat jika mereka diijinkan untuk membaca hasil bagian dari transaksi yang belum selesai yang secara bersamaan membaca database.

•    Inconsistent Analysis
Penjelasan:
Masalah inconsistent analysis muncul ketika sebuah transaksi membaca beberapa nilai dari database tapi transaksi kedua mengubah beberapa darinya ketika eksekusi transaksi yang pertama. Contohnya, sebuah transaksi yang meringkas data pada sebuah database(contohnya, saldo total) akan mendapat hasil yang tidak akurat jika, ketika berjalan, transaksi lain sedang mengubah database. Pada contoh diatas, ringkasan transaksi T6 sedang berjalan secara bersamaan dengan transaksi T5. Transaksi T6 sedang menjumlahkan saldo rekening x ($100), rekening y ($50), dan rekening z($25). Namun, di tengah jalan, transaksi T5 telah mentransfer $10 dari balx ke bal¬z, sehingga T6 sekarang mempunyai hasil yang salah (lebih besar $10).

Contoh Kasus:
Seorang dosen bernama Andi adalah seorang pegawai yang memiliki saldo sebesar Rp 6.000.000. dia melakukan transfer uang sebesar Rp 2.000.000. dan pada waktu yang bersamaan dia mendapat gaji sebesar Rp 3.000.000. Tentukan:
1.    Apakah saldo berkurang atau bertambah?
2.    Termasuk dalam masalah apakah kasus tersebut?
3.    Siapa pihak yang dirugikan dalam transakasi yang bersamaan ini?

Penjelasan :
Transaksi T1 dan T2 mulai pada waktu yang hampir bersamaan, dan keduanya membaca saldo Rp6jt. T2 mengurangi balx Rp6jt menjadi Rp4jt dan menyimpan hasil perubahannya dalam database. Di sisi lain, transaksi T1 menambah copy dari balx Rp2jt menjadi Rp8jt dan menyimpan nilai ini dalam database, menimpa hasil update sebelumnya dan akhirnya menghilangkan Rp4jt yang telah ditambahkan sebelumnya ke dalam saldo. Kehilangan update transaksi T2 dapat dihindari dengan mencegah T¬1 membaca nilai dari balx sampai update T2 telah selesai.

Jawab :
1.    Saldo bertambah
2.    Termasuk dalam kategori masalah Lost Update
3.    Tidak ada yang dirugikan, malah keduanya diuntungkan