? In einer relationalen Datenbank -Management-System (RDBMS ), wie eine SQL -basierte Datenbank , "Sperren " werden verwendet, um Benutzern die Veränderung die gleichen Daten zur gleichen Zeit zu stoppen. Wenn eine bestimmte Menge von Daten gesperrt ist, kann sie nicht von einem anderen Benutzer manipuliert werden , bis der erste Benutzer nimmt die Sperre. Weitere Einschränkungen angewendet werden kann, wie die Verhinderung von anderen Benutzern das Lesen von Daten , bis sie entriegelt ist, und es gibt Ausnahmen von dieser allgemeinen Regel Verriegelung . Es gibt sechs Arten von Sperren in SQL . Gemeinsame Sperren (S)
eine gemeinsame Sperre hält Daten für einen einzelnen Benutzer zu lesen. Andere Benutzer können keine Daten ändern , die unter eine gemeinsame Sperre gehalten wird , aber sie sind in der Lage, die Daten zu lesen . Sobald die Daten gelesen hat , wird die Sperre in der Regel verzichtet , mit einigen Ausnahmen , wie wenn die Transaktion ausgeführt wird, mit dem READCOMMITTED oder READCOMMITTEDLOCK Verriegelung Isolationsstufe . Gemeinsame Sperren werden in Nur-Lese- Operationen nur verwendet werden , und kann nicht verwendet werden , um die Daten zu ändern.
Exclusive Locks ( X)
Eine exklusive Sperre verwendet wird, um zu verhindern, ein Teil der Daten , die von einer Transaktion aus, die von einer anderen Transaktion geändert geändert . Standardmäßig Daten unter einer exklusiven Sperre nicht durch andere Personen als den Spind zu lesen , aber diese Einstellung kann mithilfe der NOLOCK-Hinweis oder eine READUNCOMMITTED Isolationsstufe geändert werden. Diese Art der Sperre würde mit Operationen wie INSERT verwendet werden , UPDATE und DELETE .
Update-Sperren (U)
Ein Update-Sperre sitzt in der Mitte - Boden zwischen einem Shared-Sperre und eine exklusive Sperre . Wenn einige Daten hat eine exklusive Sperre für sie , kann keine andere Sperre für sie platziert werden. Ein Update Schloss kann auf eine Sperre , die bereits über eine gemeinsame Sperre auf ihn gesetzt werden , und wenn es an der Zeit , um Updates zu den Daten , die Update-Sperre ändert sich in einer exklusiven Sperre zu machen kommt . Nur ein Update-Sperre kann auf eine Ressource zu einem bestimmten Zeitpunkt gestellt werden.
Intent Locks ( I)
Absichtssperre erlaubt einer Transaktion , eine andere Transaktion seiner benachrichtigen Absicht , um die Daten zu sperren - " . Intent lock" daher der Name Sie funktionieren verhindern Transaktionen von Sperren noch Transaktionen von Sperren einen höheren Teil der Datenbank . Zum Beispiel , indem eine beabsichtigte Sperre auf dem Tisch verhindert eine andere Transaktion eine exklusive Sperre Platzierung in der Tabelle , die eine Sperre auf einem unteren Teil wie eine Zeile oder eine Seite würde abzubrechen.
Schema Locks ( Sch) und Bulk- Update-Sperren (BU)
Schema Schlösser sind mit einer Operation , die das Schema der Tabelle läuft erfordert verwendet . Es gibt zwei Arten - ein Schema Stabilität Sperre (Sch -S) , die nicht blockiert den Zugriff auf die Objektdaten und ein Schema Modifikation Sperre, die den Zugang zu den Objektdaten tut. Eine Masse Update-Sperre , wie der Name schon sagt, wird von Bulk-Operationen wie Bulk - Kopieren von Daten verwendet wird, und wenn die TABLOCK Hinweis angegeben wurde.