Gelegentliche Deadlocks auf einem RDBMS, das wie SQL Server/Sybase sperrt, sind zu erwarten.
Sie können auf dem Client codieren, wie empfohlen mein MSDN "Handling Deadlocks"
Andernfalls sollten Sie Ihren Code überprüfen, damit alle Zugriffe auf Tabellen in derselben Reihenfolge erfolgen. Oder Sie können SET DEADLOCK_PRIORITY verwenden, um zu kontrollieren, wer ein Opfer wird.
Auf MSDN für SQL Server gibt es "Minimizing Deadlocks" die beginnt
Dies erwähnt auch "Use a Lower Isolation Level", was ich nicht mag (wie viele SQL-Typen hier auf SO) und ist Ihre Frage. Tu es nicht, ist die Antwort... :-)
- Was kann passieren, wenn (nolock) für jedes SELECT in SQL Server verwendet wird?
- https://dba.stackexchange.com/q/2684/630
Hinweis:MVCC Typ RDBMS (Oracle, Postgres) haben dieses Problem nicht. Siehe http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversioning aber MVCC hat andere Probleme.