2016-08-04 47 views
1

Ich verwende SQL Server 2008 R2.Festlegen/ändern lock_monitor Standardintervall

Ich habe diese Dokumentation auf technet lesen: https://technet.microsoft.com/en-us/library/ms178104(v=sql.105).aspx

In meiner Anwendung habe ich innerhalb von 5 Sekunden auf einer Industriemaschine reagieren. Manchmal (approximativ einmal am Tag) stoße ich auf Deadlock in der Datenbank und führe die Transaktion erneut aus. Dieses Verfahren funktioniert gut.

Mein Problem ist die Dauer der Deadlock-Auflösung. Da ich weiß, dass ich 5 Sekunden Zeit habe, um auf den Rechner zu antworten, möchte ich das Standardintervall für lock_monitor thread auf 2 Sekunden setzen. Daher könnte ein Deadlock innerhalb von 5 Sekunden erkannt und behoben werden, da es jetzt bis zu 7 Sekunden dauert, um das Problem zu lösen.

Ist es möglich?

+0

Haben Sie dies herauszufinden stephane? – scsimon

Antwort

1

Ja, es ist möglich, den Schwellenwert für blockierte Prozesse zu ändern, dies sollte jedoch nicht der Fall sein.

Configure Blocked Threshold

Increase/Decrease Threshold

Why You Shouldn't Do This...

Exkurs ...

Wenn die Sperre Monitor Gewinde Deadlocks findet, wird das Deadlock-Erkennungsintervall so niedrig 5 Sekunden fallen als 100 Millisekunden, abhängig von der Häufigkeit von Deadlocks.

Wenn der Sperrmonitor-Thread keine Deadlocks mehr findet, erhöht die Datenbank Engine die Intervalle zwischen Suchvorgängen auf 5 Sekunden.

Wenn gerade ein Deadlock erkannt wurde, wird angenommen, dass die nächsten Threads, die auf eine Sperre warten müssen, in den Deadlock-Zyklus eintreten. Die erste Sperre wartet, nachdem ein Deadlock erkannt wurde, wird sofort eine Deadlock-Suche auslösen, anstatt auf das nächste Deadlock-Erkennungsintervall zu warten. Wenn zum Beispiel das aktuelle Intervall 5 Sekunden ist und gerade ein Deadlock erkannt wurde, löst der nächste Lock Wait sofort den Deadlock-Detektor aus. Wenn diese Sperre warten ist Teil einer Sackgasse befindet, wird es sofort und nicht während der Suche nächste Deadlock

Reference

nachzuweisenden
+0

Es ist seltsam! Ich verstehe nicht, ob es sich um einen Fehler oder eine freiwillige Funktion handelt. Warum sagt [diese Seite] (https://support.microsoft.com/en-us/kb/2157154): _Die Mindestzeit, die ein blockierter Prozess erkannt werden kann, ist 5 Sekunden_? Es ist nicht vollständig konfigurierbar? – stephanejulien

+0

Kein Fehler @ Stephanejulien – scsimon