Apakah SQL Server Database menulis lebih lambat dengan Isolasi Snapshot?

8

Saya memiliki banyak kebuntuan yang terjadi di sistem saya.

Saya ingin menggunakan Snapshot Isolasi untuk memperbaikinya, tetapi DBA saya memiliki cadangan tentang hal itu.

Salah satu kekhawatirannya adalah bahwa Snapshot Isolasi memperlambat menulis. Ini karena harus menulis ke cache dan kemudian ke TempDb (versi baris) dan kemudian dapat kembali ke pemanggil.

Tulisan "normal" hanya dapat menulis ke cache dan kemudian dilakukan.

Apakah ini cara kerja pembuatan baris? Atau lebih kompleks dari itu? Apakah itu entah bagaimana melakukan ini secara paralel?

Atau apakah menulis lebih lambat dengan Isolasi Snapshot?

Gunung berapi
sumber
2
Satu masalah yang harus diperhatikan ketika Anda mengaktifkan isolasi snapshot: ukuran baris Anda akan meningkat sebesar 14 byte. Pastikan Anda telah merencanakan peningkatan kapasitas ini dan setiap halaman yang dihasilkan terbelah.
StanleyJohns

Jawaban:

14

karena harus menulis ke cache dan kemudian ke TempDb (versi baris) dan kemudian dapat kembali ke pemanggil.

Tidak, ini salah. Entah bagaimana itu menyiratkan bahwa menulis di hadapan versi memiliki latensi yang lebih tinggi karena setiap tulisan harus menyentuh disk (untuk tempdb) yang tidak benar. Tulis ke tempdb juga merupakan tulis ke 'cache'. Satu-satunya 'menunggu' terjadi pada waktu KOMIT ketika log harus dikeraskan. Memang benar bahwa dengan memversi baik log DB dan tempdb harus mengeras, tetapi ini tidak selalu berarti latensi yang lebih tinggi (IO harus paralel pada jalur penyimpanan yang berbeda, tempdb disimpan pada drive terpisah dari LDF yang sering digunakan, Baik?). Untuk penjelasan lengkapnya, baca Cara Kerjanya: Presentasi I / O SQL Server Bob Dorr Saya sangat berharap DBA Anda memahami ini lebih baik daripada yang Anda sampaikan di sini.

Seperti yang saya sebutkan di posting Anda yang lain: snapshot tidak memiliki biaya untuk INSERTS dan biaya untuk pembaruan dan penghapusan dapat dengan mudah dikurangi. Row Versioning Resource Usage menjelaskan trade off. Pada saat ini Anda mungkin harus menguji dengan beban kerja yang realistis, yang merupakan satu-satunya cara untuk menilai dampak yang akan Anda alami.

Remus Rusanu
sumber
4
BTW mempertimbangkan ini: apakah Anda, atau DBA Anda, pernah menggunakan Pemicu dalam 7 tahun terakhir? Sejak SQL 2005 pemicu diimplementasikan menggunakan snapshot di belakang layar. Hal yang sama berlaku jika Anda pernah menggunakan membangun kembali indeks online atau MARS . Bagaimana jika Anda memeriksa sekarang sys.dm_db_file_space_usagedi server produksi Anda. Jika version_store_reserved_page_countbukan nol Anda sudah menggunakan versi toko .
Remus Rusanu
Saya tidak berpikir tempdb log harus dikeraskan karena redo tidak pernah dijalankan pada tempdb. Jadi biaya overhead bahkan lebih rendah.
usr
0

Saya percaya ada masalah lain dalam aplikasi jika Anda mendapatkan kebuntuan. Isolasi snapshot biasanya membantu mengurangi kunci tunggu tetapi akar deadlock biasanya metode akses yang berbeda dalam aplikasi yang harus dicegah dengan mengikuti pola yang konsisten. Diskusi tentang kebuntuan itu rumit dan ada banyak sumber daya yang didedikasikan untuk mereka.

DBA Anda berhak memiliki kekhawatiran tentang mengubah level isolasi menjadi snapshot karena meningkatkan beban pada tempDB. Saya sarankan pergi ke snapshot isolasi secara umum, tapi saya pikir itu hanya satu bagian dari mengatasi kebuntuan Anda. Anda mungkin berakhir dengan tulisan kotor, di mana satu transaksi memperbarui baris A lalu B, dan transaksi lainnya memperbarui baris B lalu A.

Robert-Ryan.
sumber