Ich bin ein versehentlicher DBA und lerne immer noch.
Was ist zu tun, wenn ich von DMV: s oder Activity Monitor sehe, dass ein Prozess einen anderen Prozess blockiert?
Sollte ich diese Prozesse einfach beenden oder gibt es eine Möglichkeit, diese Blockierung "freizugeben" oder vielleicht präventiv zu verhindern?
sql-server
locking
jrara
quelle
quelle
Obwohl diese Frage bereits beantwortet und die Antwort akzeptiert wurde, werde ich versuchen, für den gegenteiligen Ansatz einzutreten ...
TÖTEN SIE NIEMALS EIN SPID BLIND
Wenn Sie nicht wissen, welche Arbeit SPID geleistet hat, haben Sie kein Verständnis für den Umfang des Rollbacks, den Sie einleiten möchten.
Die schlimmste Art von Blockierketten sind solche, die Ihr 24/7-System unerwartet in die Knie gezwungen haben. In 99% der Fälle handelt es sich bei der Abfrage am Anfang dieser Blockierungskette um eine einfache alte Auswahlabfrage, bei der alle Schreibaktivitäten dahinter in die Warteschlange gestellt werden. Unter diesen Umständen wird ein KILL den Tag retten.
In den anderen 1% der Fälle ist diese unerwünschte Abfrage der letzte Schritt in einer lang laufenden Transaktion, deren Rollback genauso lange dauert wie das Erreichen der aktuellen Phase. Es ist in 99% der Fälle unnötig, sich einen Moment Zeit zu nehmen, um zu verstehen, wie Sie hierher gekommen sind. In 1% der Fälle können Sie Minuten / Stunden / Tage Ausfallzeit sparen.
quelle
Blockieren an und für sich ist nicht schlecht .
Das Problem tritt auf, wenn Sie Leistungsprobleme bei lang laufenden Transaktionen haben, die andere Transaktionen blockieren.
In diesem Fall würde ich versuchen, lang laufende Abfragen / Transaktionen zu identifizieren und diese Probleme zu beheben.
Wenn Sie Leistungsprobleme haben, versuchen Sie, die Grundursache und nicht das Symptom zu beheben.
Wenn Sie jedoch ein Problem mit der Produktion haben und es unbedingt stoppen müssen, verwenden Sie die KILL-Routine. (wie erwähnt).
quelle
Das Sperren ist normal. Es passiert die ganze Zeit mit Konflikten. Es ist das ständige Deadlocking, das ein Problem darstellt, da das Datenbankmodul einen Opferprozess auswählt, um die Transaktion zu beenden und zurückzusetzen. Statistiken belegen, dass dies zwangsläufig der Fall ist. Wenn dies jedoch ständig geschieht, müssen Sie einen Drilldown zu den Ursachen durchführen und Abfragen und Codelogik neu schreiben.
quelle