Sepertinya saya mendapatkan banyak kebuntuan ketika melakukan pilih count (*) pada tabel tertentu. Saya telah mengubah semua parameter yang diperlukan dan membuatnya menjadi penguncian baris saja.
Saya juga mengubah basis data untuk menggunakan isolasi READ_COMMITTED_SNAPSHOT,
Namun, tampaknya menggunakan penghitungan pilih (*) di mana kolom =? di atas meja memicu kebuntuan atau kunci di atas meja ..
Apakah saya benar bahwa penghitungan pilih (*) seharusnya hanya mengakses baris perantara ?, Namun, sepertinya tidak seperti itu dan saya masih mengalami kebuntuan. Pengindeksan yang tepat mungkin akan membantu,
Pertanyaannya adalah: Apakah SQL server 2008 R2 menempatkan kunci bersama di atas meja selama jumlah pilih (*) bahkan ketika read_committed_snapshot diatur ke aktif?
Terima kasih
sumber
WHERE
klausa, metode yang saya pikirkan tidak akan berhasil.Jawaban:
Hati-hati dengan READ_COMMITTED_SNAPSHOT: jika Anda menyalakannya, itu dapat menyebabkan banyak bug halus.
READ_COMMITTED_SNAPSHOT juga adalah tingkat isolasi default, yang mungkin ditimpa oleh sesuatu. Jalankan DBCC USEROPTIONS untuk menentukan tingkat isolasi aktual yang Anda pilih berjalan di bawah.
Saya akan secara eksplisit SET TRANSAKSI ISOLASI LEVEL SNAPSHOT tepat sebelum Anda pilih. Dengan begitu Anda akan yakin bahwa orang yang Anda pilih tidak pernah menerima kebuntuan, dan Anda tidak merusak kode lain, seperti yang mungkin READ_COMMITTED_SNAPSHOT.
sumber
Penguncian dengan Isolasi Snapshot tidak berubah. Apa yang berubah adalah ketika halaman diubah di bawah Anda, halaman-halaman tersebut disalin ke database tempdb sehingga Anda dapat membacanya dari database tempdb alih-alih dari database normal. (Ya ini adalah versi sederhana dari apa yang terjadi.)
Anda menyebutkan bahwa Anda tidak memiliki pengindeksan yang tepat, jadi Anda melakukan pemindaian indeks berkerumun (atau pemindaian tabel jika tumpukan). Itu berpotensi banyak data untuk dipindahkan ke database tempdb. Jika kueri ini adalah sesuatu yang akan dijalankan lebih dari sekali saya sarankan menambahkan indeks ke tabel.
Tingkat isolasi apa yang digunakan kueri Anda?
sumber