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

Menghindari kebuntuan dengan menggunakan petunjuk NOLOCK

Kebuntuan sesekali pada RDBMS yang terkunci seperti SQL Server/Sybase diharapkan.

Anda dapat membuat kode pada klien untuk mencoba lagi seperti yang direkomendasikan MSDN "Menangani Kebuntuan" .Pada dasarnya, periksa SQLException dan mungkin setengah detik kemudian, coba lagi.

Jika tidak, Anda harus meninjau kode Anda sehingga semua akses ke tabel berada dalam urutan yang sama. Atau Anda dapat menggunakan SET DEADLOCK_PRIORITY untuk mengontrol siapa yang menjadi korban.

Di MSDN untuk SQL Server ada "Meminimalkan Deadlock" yang dimulai

Ini juga menyebutkan "Gunakan Tingkat Isolasi yang Lebih Rendah" yang tidak saya sukai (sama seperti banyak jenis SQL di sini di SO) dan merupakan pertanyaan Anda. Jangan lakukan itu jawabannya... :-)

Catatan:MVCC ketik RDBMS (Oracle, Postgres) tidak memiliki masalah ini. Lihat http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversioning tetapi MVCC memiliki masalah lain.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat memuat SqlServerSpatial.dll

  2. Saya ingin menampilkan semua tabel yang memiliki nama kolom tertentu

  3. Bagaimana cara mengubah skema db ke dbo

  4. Fungsi vs Prosedur Tersimpan

  5. Apakah Ada Risiko Keamanan yang Terlibat Dengan Spotlight Cloud Monitoring?