Serialisasi

Idealnya, transaksi harus dapat diserialisasikan. Transaksi dikatakan dapat diserialisasikan jika hasil transaksi yang berjalan secara bersamaan sama dengan hasil menjalankannya secara serial - yaitu, satu demi satu. Tidak penting transaksi mana yang dijalankan terlebih dahulu, hanya saja hasilnya tidak mencerminkan pencampuran transaksi.

Misalnya, transaksi A mengalikan nilai data dengan 2 dan transaksi B menambahkan 1 ke nilai data. Sekarang misalkan ada dua nilai data: 0 dan 10. Jika transaksi ini dijalankan satu demi satu, nilai baru akan menjadi 1 dan 21 jika transaksi A dijalankan terlebih dahulu, atau 2 dan 22 jika transaksi B dijalankan terlebih dahulu. Tetapi bagaimana jika urutan kedua transaksi dijalankan berbeda untuk setiap nilai? Jika transaksi A dijalankan terlebih dahulu pada nilai pertama dan transaksi B dijalankan terlebih dahulu pada nilai kedua, nilai baru adalah 1 dan 22. Jika urutan ini dibalik, nilai baru adalah 2 dan 21. Transaksi dapat diserialisasikan jika 1, 21, dan 2, 22 adalah satu-satunya hasil yang mungkin. Transaksi tidak dapat diserialisasikan jika 1, 22 atau 2, 21 adalah hasil yang mungkin.

Jadi mengapa serializability diinginkan? Dengan kata lain, mengapa penting bahwa tampaknya satu transaksi selesai sebelum transaksi berikutnya dimulai? Pertimbangkan masalah berikut. Seorang salesman memasukkan pesanan pada saat yang sama seorang petugas mengirimkan tagihan. Misalkan penjual memasukkan pesanan dari Perusahaan X tetapi tidak menerapkannya; penjual masih berbicara dengan perwakilan dari Perusahaan X. Petugas meminta daftar semua pesanan terbuka dan menemukan pesanan untuk Perusahaan X dan mengirimkan tagihan kepada mereka. Sekarang perwakilan dari Perusahaan X memutuskan mereka ingin mengubah pesanan mereka, sehingga penjual mengubahnya sebelum melakukan transaksi. Perusahaan X mendapatkan tagihan yang salah.

Jika transaksi penjual dan petugas dapat diserialisasikan, masalah ini tidak akan pernah terjadi. Baik transaksi penjual akan selesai sebelum transaksi petugas dimulai, dalam hal ini petugas akan mengirimkan tagihan yang benar, atau transaksi petugas akan selesai sebelum transaksi penjual dimulai, dalam hal ini petugas tidak akan mengirim tagihan ke Perusahaan X sama sekali.