Očekává se občasné zablokování na RDBMS, které se zamyká jako SQL Server/Sybase.
Na klientovi můžete kódovat a zkusit to znovu podle doporučení mého MSDN "Handling Deadlocks" .V podstatě prozkoumejte výjimku SQLException a možná o půl sekundy později to zkuste znovu.
V opačném případě byste měli zkontrolovat svůj kód, aby všechny přístupy k tabulkám byly ve stejném pořadí. Nebo můžete použít SET DEADLOCK_PRIORITY ke kontrole toho, kdo se stane obětí.
Na MSDN pro SQL Server existuje "Minimalizace zablokování" která začíná
Toto také zmiňuje „Použít nižší úroveň izolace“, což se mi nelíbí (stejně jako mnoho typů SQL zde na SO) a je to vaše otázka. Nedělej to je odpověď... :-)
- Co se může stát v důsledku použití (nolock) na každém SELECT v SQL Serveru?
- https://dba.stackexchange.com/q/2684/630
Poznámka:MVCC typu RDBMS (Oracle, Postgres) tento problém nemají. Viz http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversioning ale MVCC má jiné problémy.