SQL-Server-Deadlocks: Vom Graphen zur Ursache
Ein Deadlock ist ein Zyklus, in dem Sitzungen gegenseitig benötigte Ressourcen halten. SQL Server beendet einen Teilnehmer, doch das Opfer ist nicht zwingend die Ursache.
SQL-Server-Deadlocks: Vom Graphen zur Ursache
Ein Deadlock ist ein Zyklus, in dem Sitzungen gegenseitig benötigte Ressourcen halten. SQL Server beendet einen Teilnehmer, doch das Opfer ist nicht zwingend die Ursache.
Was gemessen werden sollte
Erfassen Sie Deadlock-XML mit Extended Events. Prüfen Sie Prozesse, Ressourcen, Sperrmodi, Anweisungen, Transaktionsnamen und Opfer und ordnen Sie jede Anweisung der Anwendung zu.
Praktisches Vorgehen
Greifen Sie in konsistenter Reihenfolge auf Objekte zu, verkürzen Sie Transaktionen, verbessern Sie begründet die Zugriffspfade und implementieren Sie begrenzte Wiederholungen für Fehler 1205.
Was vermieden werden sollte
Verwenden Sie NOLOCK nicht als Universallösung, beschuldigen Sie nicht nur das Opfer und speichern Sie nicht nur einen Screenshot statt des vollständigen XML-Graphen.
Betriebliches Ergebnis
Eine dauerhafte Lösung entfernt oder verkürzt den Zyklus. Wiederholungen schützen Benutzer, ersetzen aber nicht die Ursachenbehebung.
Checkliste für die Produktion
Erfassen Sie eine Ausgangsbasis und definieren Sie die erwartete Verbesserung. Testen Sie mit repräsentativen Daten und realistischer Parallelität. Sichern Sie die ursprüngliche Einstellung oder den Plan, bereiten Sie einen Rollback vor und überwachen Sie die nächste normale Lastspitze.
Wenn Sie diese Methode auf eine konkrete SQL-Server-Umgebung anwenden möchten, nutzen Sie das Frageformular unten und nennen Sie SQL-Server-Version, Datenbankgröße, Lastprofil und bereits erfasste Nachweise.