Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mendiagnosis Deadlock di SQL Server 2005

Menurut MSDN:

http://msdn.microsoft.com/en-us/library/ms191242.aspx

Ketika opsi database READ COMMITTED SNAPSHOT atau ALLOW SNAPSHOT ISOLATION AKTIF, salinan logis (versi) dipertahankan untuk semua modifikasi data yang dilakukan di database. Setiap kali sebuah baris dimodifikasi oleh transaksi tertentu, instance dari Mesin Basis Data menyimpan versi citra yang sebelumnya dikomit dari baris dalam tempdb. Setiap versi ditandai dengan nomor urut transaksi dari transaksi yang dilakukan perubahan. Versi baris yang dimodifikasi dirantai menggunakan daftar tautan. Nilai baris terbaru selalu disimpan dalam database saat ini dan dirantai ke baris berversi yang disimpan di tempdb.

Untuk transaksi yang berjalan singkat, keengganan dari baris yang dimodifikasi dapat di-cache di buffer pool tanpa harus ditulis ke dalam file disk dari database tempdb. Jika kebutuhan untuk baris berversi berumur pendek, itu hanya akan dikeluarkan dari kumpulan buffer dan mungkin tidak memerlukan overhead I/O.

Tampaknya ada sedikit penalti kinerja untuk overhead tambahan, tetapi mungkin dapat diabaikan. Kita harus menguji untuk memastikan.

Coba atur opsi ini dan HAPUS semua NOLOCK dari kueri kode kecuali benar-benar diperlukan. NOLOCKs atau menggunakan metode global dalam penangan konteks database untuk memerangi tingkat isolasi transaksi database adalah Band-Aids untuk masalah tersebut. NOLOCKS akan menutupi masalah mendasar dengan lapisan data kami dan mungkin mengarah pada pemilihan data yang tidak dapat diandalkan, di mana pemilihan otomatis / pembaruan versi baris tampaknya menjadi solusinya.

ALTER Database [StackOverflow.Beta] SET READ_COMMITTED_SNAPSHOT ON


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memotong semua tabel dalam Database di SQL Server - Tutorial SQL Server / TSQL Bagian 55

  2. Contoh Kueri Server Tertaut SQL Server

  3. Bagaimana MENGUBAH Parameter Nilai Tabel

  4. Mengkonversi dari DateTime ke INT

  5. Bagaimana saya bisa menghapus baris duplikat dalam tabel