Konsistensi database juga menjadi salah satu indikator penting untuk mengukur kinerja DBMS. Saat ini, sebagian besar database komersial (DB2, SQL Server) menggunakan protokol Penguncian Dua Fase (2PL) untuk kontrol konkurensi, yang memastikan serialisasi eksekusi transaksi bersamaan. Namun, 2PL perlu mengunci data apa pun sebelum dapat membaca atau menulis ke dalamnya. Dalam matriks kompatibilitas pemblokiran, kunci S (Kunci Berbagi) dan kunci X (Kunci Eksklusif) tidak kompatibel, jadi ketika transaksi 1 melakukan operasi baca pada data A (ditambah kunci S), dan transaksi 2 ingin menulis ke data (tambahkan kunci X), maka transaksi 2 harus menunggu transaksi 1 melepaskan kunci S pada data A sebelum melanjutkan. Multi-Version Concurrency Control (MVCC) memecahkan masalah ini dengan baik. Dalam sistem multi-versi, setiap data tulis menghasilkan versi baru, dan operasi baca dapat membaca versi yang sesuai sesuai kebutuhan, sehingga operasi baca dan tulis tidak saling memblokir. MVCC meningkatkan konkurensi, tetapi juga memperkenalkan overhead penyimpanan untuk memelihara beberapa versi.
Mesin database Microsoft SQL Server memperkenalkan implementasi baru dari tingkat isolasi transaksi yang ada - pembacaan yang dilakukan, yang menyediakan rekam jepret tingkat pernyataan menggunakan versi baris. Mesin database SQL Server juga memperkenalkan tingkat isolasi transaksi baru - rekam jepret untuk menyediakan rekam jepret tingkat transaksi yang juga menggunakan versi baris.
Mengatur opsi database READ_COMMITTED_SNAPSHOT ke ON memungkinkan isolasi baca yang diterapkan menggunakan versi baris. Mengatur opsi database ALLOW_SNAPSHOT_ISOLATION ke ON memungkinkan isolasi rekam jepret. Ketika salah satu opsi diaktifkan untuk database, mesin database mempertahankan versi setiap baris yang dimodifikasi. Setiap kali transaksi memodifikasi baris, gambar baris sebelum modifikasi disalin ke halaman di penyimpanan versi. Penyimpanan versi adalah kumpulan halaman data dalam tempdb. Jika ada beberapa baris modifikasi transaksi, beberapa versi baris tersebut akan ditautkan dalam rantai versi. Operasi baca menggunakan penerapan versi baris akan mengambil versi terakhir dari setiap baris yang diterapkan pada saat transaksi atau pernyataan dimulai.
Aplikasi yang ditulis untuk SQL Server 2008 atau baru di SQL Server menerapkan isolasi penerapan baca menggunakan penerapan versi baris dengan menentukan tingkat isolasi transaksi untuk penerapan baca saat opsi database READ_COMMITTED_SNAPSHOT AKTIF. Semua pembacaan akan melihat versi baris yang diterapkan saat pernyataan dimulai. Ini akan memberikan snapshot data tingkat pernyataan.
Aplikasi yang ditulis untuk SQL Server akan menerapkan isolasi rekam jepret dengan menentukan tingkat isolasi transaksi rekam jepret saat opsi database ALLOW_SNAPSHOT_ISOLATION AKTIF. Semua pembacaan dalam transaksi rekam jepret akan melihat versi baris yang diterapkan saat transaksi dimulai. Ini akan memberikan snapshot data tingkat transaksi.
Untuk transaksi yang menggunakan tingkat isolasi berbasis baris, pembacaan tidak meminta kunci bersama pada data. Artinya, pembaca yang menggunakan versi baris tidak mencegah pembaca atau penulis lain mengakses data yang sama. Demikian pula, penulis tidak menghalangi pembaca. Namun, penulis saling menghalangi (bahkan saat berjalan pada tingkat isolasi berdasarkan versi baris). Dua operasi tulis tidak dapat memodifikasi data yang sama secara bersamaan.
Fitur Isolasi Rekam Jepret memperluas kerangka kerja penguncian di SQL Server 2008 dengan memungkinkan aplikasi untuk melihat nilai sebelum modifikasi data terjadi. Ini mencegah aplikasi dikunci sambil tetap memberikan data yang benar-benar dikirimkan. Rekam Jepret Baca Komitmen SQL Server 2008 memerlukan administrator database untuk mengaktifkan, memungkinkan data dibaca dengan transaksi baca-saja. Jadi kontrol konkurensi SI dari transaksi hanya-baca sangat bagus, tetapi tidak jelas apakah ini terjadi untuk transaksi pembaruan. Lebih tidak menguntungkan bagi transaksi pembaruan jangka panjang untuk bersaing dengan transaksi tingkat tinggi jangka pendek. Jika transaksi di seluruh database mencoba menggunakan standar Isolasi Rekam Jepret (SI), bukan semua database yang ditetapkan, transaksi gagal. Hal ini tidak diragukan lagi menciptakan hambatan tertentu untuk skalabilitas. Tampaknya Microsoft masih memiliki jalan panjang untuk mencapai SI-nya sendiri yang lebih kuat dari spesifikasi SQL 92.
Sebelum modifikasi apa pun, buat salinan versi sebelumnya, dan semua operasi baca berikutnya akan membaca versi yang disalin, dan modifikasi akan membuat versi baru. Dengan cara ini,Operasi baca dan tulis tidak saling memblokir. Keuntungan menggunakan mekanisme versi baris ini adalah bahwa konkurensi program relatif tinggi, tetapi kerugiannya adalah meskipun pengguna tidak membaca data yang kotor, itu mungkin nilai data yang sedang dimodifikasi dan akan kedaluwarsa. Jika Anda memodifikasi data berdasarkan nilai kedaluwarsa ini, itu akan menyebabkan kesalahan logis。
Perintah SQL:
Tautan referensi:
Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat.
|