Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Unikanie zakleszczenia za pomocą podpowiedzi NOLOCK

Oczekiwane są sporadyczne zakleszczenia w RDBMS, które blokują się, takie jak SQL Server/Sybase.

Możesz kodować na kliencie, aby spróbować ponownie zgodnie z zaleceniami MSDN "Obsługa zakleszczeń" .Zasadniczo sprawdź wyjątek SQLException i może pół sekundy później spróbuj ponownie.

W przeciwnym razie przejrzyj swój kod, aby wszystkie dostępy do tabel były w tej samej kolejności. Możesz też użyć SET DEADLOCK_PRIORITY, aby kontrolować, kto staje się ofiarą.

W MSDN dla SQL Server istnieje "Minimalizowanie zakleszczeń" która zaczyna się

Wspomina to również „Użyj niższego poziomu izolacji”, którego nie lubię (takie samo jak wiele typów SQL tutaj w SO) i jest twoim pytaniem. Nie rób tego jest odpowiedzią... :-)

Uwaga:MVCC typu RDBMS (Oracle, Postgres) nie mają tego problemu. Zobacz http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversioning ale MVCC ma inne problemy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rozwój maszyn wirtualnych platformy Azure do wykorzystania w programie SQL Server

  2. Jak zrobić kolumnę widoku NOT NULL

  3. Konwertowanie danych varBinary SQL Server na ciąg znaków C#

  4. Jak korzystać z funkcji AlwaysOn programu SQL Server

  5. Eksport SQL Server BCP, gdzie przecinek w polu SQL