Apa Itu Isolasi Snapshot?

Isolasi snapshot adalah properti dalam pemrosesan transaksi dan database yang menjamin semua pembacaan yang dilakukan dalam transaksi melihat “snapshot” database yang sama. Ini berarti bahwa transaksi akan berkomitmen untuk berhasil memproses permintaan jika pembaruannya tidak bertentangan dengan pembaruan bersamaan lainnya. Isolasi snapshot adalah algoritme kontrol untuk konkurensi multi-versi yang menyediakan tingkat isolasi yang menghindari masalah yang biasanya terjadi dengan konkurensi. Isolasi ini telah diterapkan oleh beberapa server bahasa kueri terstruktur (SQL) yang berbeda, yang beroperasi dengan anomali serialisasi dalam jumlah minimal. Namun, isolasi snapshot tidak akan menjamin serializability lengkap di server.

Banyak sistem manajemen data utama berisi tingkat isolasi default yang tidak dapat diserialisasi dan sering mengalami anomali serialisasi tanpa isolasi snapshot. Hal ini dapat menyebabkan sistem besar memiliki banyak kejadian kesalahan isolasi setiap hari, yang dapat menyebabkan data rusak, terutama yang ditemukan dalam aplikasi gudang data. Alasan sistem dapat beroperasi dalam keadaan ini adalah karena aplikasi yang berjalan pada tingkat isolasi yang lebih rendah dapat meningkatkan efisiensi jika tidak terjadi kesalahan serius. Menyertakan isolasi snapshot dalam sistem akan mengurangi anomali ini dan — saat memperhitungkan waktu operasi dan jumlah kesalahan yang terjadi — meningkatkan efisiensi lebih jauh.

Beberapa database menawarkan isolasi snapshot sebagai lawan dari serializability penuh, tetapi ada juga anomali yang dapat terjadi dalam database yang menggunakan jenis isolasi ini. Anomali ini dapat menyebabkan pelanggaran konsistensi data karena transaksi yang menjaga konsistensi interleave, atau disusun dalam lapisan yang bergantian. Satu-satunya cara untuk mengatasi masalah dan mencegah anomali seperti ini adalah dengan memanipulasi aplikasi dengan pengenalan kunci buatan dan pembaruan yang bertentangan, yang diikuti dengan analisis konflik antara setiap pasangan transaksi. Namun, cara berbeda untuk mengatasi anomali ini adalah dengan memodifikasi algoritme kontrol konkurensi sistem database untuk melakukan deteksi otomatis dan pencegahan anomali isolasi snapshot saat runtime. Ini dapat dilakukan untuk aplikasi penting atau arbitrer, tetapi menyediakan isolasi yang dapat serial.

Server SQL yang lebih baru telah mampu memperkenalkan tingkat isolasi baru serta tingkat isolasi snapshot baru untuk peningkatan konkurensi dalam aplikasi tertentu. Jika versi awal dari server SQL menggunakan penguncian sebagai dasar untuk konkurensi, isolasi snapshot bergantung pada peningkatan versi baris yang dimaksudkan untuk peningkatan kinerja. Ini meningkatkan kinerja ini ketika menghadapi skenario dengan pemblokiran baca atau tulis dengan menghindarinya.