Ich habe eine Tabelle, die innerhalb einer Sekunde tausende Male eingefügt, aktualisiert und ausgewählt wird. Ich habe jedoch Deadlock-Probleme.
- Die Datenbank verfügt über 2-5 gleichzeitige 1000+ Zeileneinfügungen mit Linq to Sql.
40 Mal pro Sekunde gibt es auch eine select-Anweisung aus dieser Tabelle. Wenn eine Bedingung erfüllt ist (in 95% der Fälle), erfolgt eine Aktualisierung mit ähnlichem Code:
Prozedur erstellen AccessFile (@code, @admin) AS
deklarieren Sie @id int, @access datetime, @file string
Wählen Sie @ id = Id, @accessed = abgerufen, @file = Datei aus Dateien, in denen code = @code
IF @admin <> 0 IF @accessed ist null begin
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Aktualisieren Sie den Dateisatz access = getdate (), wobei id = @id
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
Ende
Wählen Sie @id als ID, @file als Datei
Es scheint, als ob es die Aktualisierungen sind, die mit den Einfügungen in Konflikt stehen und die Deadlocks verursachen.
Das Beispiel ist eine 1 zu 1 mit der gespeicherten Prozedur, nur der Unterschied sind die Namen. Nehmen Sie die 1 und 2 an, unabhängig von den Namen der gespeicherten Prozeduren.