Ein Deadlock kann aus vielen, vielen Gründen passieren, so dass Sie zuerst ein bisschen Hausaufgaben machen müssen, wenn Sie uns helfen wollen und uns sagen, was den Deadlock verursacht, d. Was sind die Stapel, die das Deadlock ausführen, welche Ressourcen involviert sind und so weiter und so fort? Die Profiler deadlock event graph ist immer ein großartiger Ort, um die Untersuchung zu beginnen.
Wenn ich eine Aufnahme im Dunkeln wagen würde, was passiert, ist, dass Ihre Abfragen und Indizes nicht richtig abgestimmt sind, so dass die meisten Ihrer Leseoperationen (und vielleicht einige der Schreibvorgänge) vollständige Tabellenscans sind und somit kollidieren mit Updates. Dies kann dazu führen, deadlocks by order of index access, Deadlock nach Reihenfolge der Operationen, Deadlock durch Eskalation und so weiter und so weiter.
Sobald Sie die Ursache des Deadlocks identifiziert haben, kann die entsprechende Aktion zum Entfernen des Deadlocks ausgeführt werden. Die Fälle, in denen er richtiges Handeln auf schmutzige Reads setzt, sind extrem selten.
BTW Ich bin mir nicht sicher, was Sie mit 'TransactNo updlock' meinen. Fragen Sie speziell nach der S-U/U-S asymmetry of the U locks?
Sperren Eskalation ist, wenn der Motor entscheidet, aufzugeben, einzelne granulare Sperren zu nehmen und entscheidet, eine höhere Ebene grobe Sperre zu erhalten. Die Sperreneskalation geht von Sperren auf Zeilenebene zu Sperren auf Tabellenebene. Ein Tale-Zeichen eines Lock-Eskalations-Deadlocks ist die Beteiligung von I-Locks (Intentions-Locks), da Eskalation versucht, echte Sperren auf dem Tisch zu erhalten, und es wird mit den verschiedenen bereits darauf platzierten Absichts-Locks (S-IX, S-IS) in Konflikt geraten . Ihr Beispiel ist das kanonische Lesen, gefolgt vom Schreibvorgang, es bezieht sich nicht auf Eskalation. –
Wenn ich die falsche Terminologie verwende, dann entschuldige ich mich; aber das Szenario (mit welchem Namen auch immer) ist ein häufiges Problem. –