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

Warum führt eine einzelne SQL-Löschanweisung zu einem Deadlock?

Die übliche Antwort:Es kommt darauf an! :-)

Hauptsächlich davon, wie viel Datenverkehr Sie auf Ihrem System haben und welche Transaktionsisolationsstufe Sie verwenden.

Die Isolationsstufe steuert, wie Sie Ihre Daten erhalten und wie viele Sperren stattfinden. Wenn Sie noch nie von Transaktionsisolationsstufen gehört haben, verwenden Sie wahrscheinlich die Standardeinstellung - READ COMMITTED, was nicht allzu schlimm sein sollte Wahl.

Wenn Sie jedoch so etwas wie SERIALIZABLE verwenden würden Aus irgendwelchen Gründen kann es nicht zu Deadlocks, sondern zu Verzögerungen kommen. Der Tisch ist möglicherweise für einen bestimmten Zeitraum gesperrt, bis Ihre eine Transaktion abgeschlossen ist. Wenn alle Operationen in dieser Reihenfolge funktionieren (zuerst löschen, dann einfügen, dann auswählen), sehe ich wirklich nicht, wie Sie auf Deadlocks stoßen sollten.

Informieren Sie sich hier auf www.sql-server- über Isolationsstufen für SQL-Transaktionen. performance.com .