Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Избягване на блокиране чрез използване на подсказка NOLOCK

Очакват се случайни блокировки на RDBMS, които се заключват като SQL Server/Sybase.

Можете да кодирате на клиента, за да опитате отново, както е препоръчано от моя MSDN "Handling Deadlocks" .По принцип прегледайте SQLException и може би половин секунда по-късно опитайте отново.

В противен случай трябва да прегледате кода си, така че всички достъпи до таблиците да са в същия ред. Или можете да използвате SET DEADLOCK_PRIORITY, за да контролирате кой да стане жертва.

В MSDN за SQL Server има "Минимизиране на блокиранията" който започва

Това също споменава „Използване на по-ниско ниво на изолация“, което не ми харесва (същото като много типове SQL тук на SO) и е вашият въпрос. Не го правете е отговорът... :-)

Забележка:MVCC тип RDBMS (Oracle, Postgres) нямат този проблем. Вижте http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversioning но MVCC има други проблеми.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате SignalR в уеб ферма, като използвате Sql сървър като задна платка

  2. SQL Server 2008 Ред вмъкване и актуализиране на времеви печати

  3. Създаване на индекс в SQL изглед с оператори UNION? Ще подобри ли наистина производителността?

  4. Нулева или празна проверка за низова променлива

  5. Как да внедрите регистриране и докладване на грешки в SQL съхранени процедури?