Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Deadlocks zwischen Auswahl/Aktualisierung oder Mehrfachauswahl

Dies kann passieren, weil eine Auswahl zwei verschiedene Indizes sperrt, während eine Aktualisierung dieselben Indizes in umgekehrter Reihenfolge sperrt. Die Auswahl benötigt zwei Indizes, weil der erste Index nicht alle Spalten abdeckt, auf die sie zugreifen muss; die Aktualisierung benötigt zwei Indizes, denn wenn Sie die Schlüsselspalte eines Index aktualisieren, müssen Sie eine Sperre darauf setzen.

http://blogs.msdn.com/bartd/archive /2006/09/25/770928.aspx hat eine fantastische Erklärung. Zu den vorgeschlagenen Korrekturen gehören das Hinzufügen eines Indexes, der alle Spalten abdeckt, die die Auswahl benötigt, das Umschalten auf Snapshot-Isolation oder das explizite Erzwingen einer Update-Sperre für die Auswahl, die sie normalerweise nicht benötigt.