架构师_程序员_码农网

B Passwort abrufen
Registrieren

QQ登录

Nur ein Schritt zum Start

Suche
Ansicht:9982|Antwort: 3
打印 上一主题 下一主题

[ Informationen]Datenbanksperren NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX

[Link kopieren]
A 跳转到指定楼层
Eigentümer
发表于 2021-1-14 15:23:14|只看该作者回帖奖励 | UmgekehrtesBlättern|Lesemodus
NOLOCK
Wenn diese Option aktiviert ist, fügt SQL Server beim Lesen oder Ändern von Daten keine Sperren hinzu. In diesem Fall kann der Benutzer Daten aus einer nicht abgeschlossenen Transaktion oder einem Rollback lesen, sogenannte "schmutzige Daten".

HOLDLOCK
Wenn diese Option aktiviert ist, hält SQL Server die gemeinsam genutzte Sperre bis zum Ende der gesamten Transaktion, ohne sie zwischendurch freizugeben.

UPDLOCK
Wenn diese Option aktiviert ist, verwendet SQL Server beim Lesen von Daten eine Modifikationssperre anstelle einer gemeinsamen Sperre und hält diese Sperre bis zum Ende der gesamten Transaktion oder des Befehls. Diese Option stellt sicher, dass mehrere Prozesse gleichzeitig Daten lesen können, aber nur dieser Prozess kann die Daten ändern.

TABLOCK
Wenn diese Option aktiviert ist, legt SQL Server eine gemeinsame Sperre für die gesamte Tabelle bis zum Ende des Befehls an. Diese Option stellt sicher, dass andere Prozesse die Daten nur lesen und nicht verändern können.

PAGLOCK
Wenn diese Option angekreuzt ist, verwendet SQL Server eine gemeinsame Seitensperre.

TABLOCKX (Tabellenausschlusssperre)
Wenn diese Option aktiviert ist, setzt SQL Server eine exklusive Sperre für die gesamte Tabelle, bis der Befehl oder die Transaktion beendet ist. Dies verhindert, dass andere Prozesse die Daten in der Tabelle lesen oder ändern können.

HOLDLOCK Hält eine gemeinsame Sperre, bis die Transaktion abgeschlossen ist, und sollte freigegeben werden, sobald das gesperrte Objekt nicht mehr benötigt wird, was dem Transaktionsisolationslevel SERIALIZABLE entspricht.

NOLOCK Die Ausführung der Anweisung gibt keine gemeinsame Sperre aus und erlaubt schmutzige Lesezugriffe, was der Transaktionsisolationsebene READ UNCOMMITTED entspricht.

PAGLOCK Mehrere Seitensperren werden verwendet, wenn eine Tabellensperre verwendet wird.

READPAST Erlaubt dem SQL-Server, gesperrte Zeilen zu überspringen und die Transaktion auszuführen. Gilt für die Transaktionsisolationsebene READ UNCOMMITTED und überspringt nur RID-Sperren, nicht aber Seiten-, Regions- und Tabellensperren.

ROWLOCK Erzwingt die Verwendung von Zeilensperren

TABLOCKX Erzwingt die Verwendung einer exklusiven Sperre auf Tabellenebene, die jede andere Transaktion daran hindert, die Tabelle während der Dauer der Transaktion zu verwenden.

UPLOCK Erzwingt die Verwendung von Aktualisierungen beim Lesen einer Tabelle ohne Verwendung einer gemeinsamen Sperre.

Hinweis: Der Unterschied zwischen dem Sperren einer Tabelle in einer Datenbank
SELECT * FROM table WITH (HOLDLOCK) Andere Transaktionen können die Tabelle lesen, sie aber nicht aktualisieren oder löschen.
SELECT * FROM table WITH (TABLOCKX) Andere Transaktionen können die Tabelle nicht lesen, aber auch nicht aktualisieren oder löschen.




Vorherige: Win10 Remote Desktop Zweibildschirm-Anzeige
Next :.NET/C# basierend auf Nethereum, um ETH-Wallet-Konto zu erstellen und das Passwort zu verifizieren [mit Quellcode].
Die erste ist die Verwendung des gleichen Modells wie in der vorherigen, und die zweite ist die Verwendung des gleichen Modells wie in der vorherigen.
trikots
楼主|发表于 2021-1-14 16:53:24|只看该作者
TABLOCKX-Sperre testen

Die Test-SQL lautet wie folgt:


Test c# code:


Ich fand, dass die ganze Tabelle gesperrt ist, nur warten, bis die Transaktion Ausführung abgeschlossen ist, können die Daten abfragen, die folgende Abbildung:



Löschen Sie WITH(TABLOCKX) und aktualisieren Sie nur die Daten mit Id 1, testen Sie wie folgt:



Da die Abfragen von Aufgabe 2 und Aufgabe 4 keine Daten mit der ID 1 betreffen, sind die Abfragen sehr schnell, während 3 und 4 warten müssen, bis die Transaktion abgeschlossen ist, bevor sie abgefragt werden können.

Verhalten bei der Änderung von Daten

Bei einer festgeschriebenen Lesetransaktion mit Zeilenversionskontrolle erfolgt die Auswahl der zu aktualisierenden Zeilen durch einen blockierenden Scan, bei dem eine Aktualisierungssperre (U-Sperre) auf die Datenzeilen angewendet wird, während die Datenwerte gelesen werden. Dies ist dasselbe wie bei einer festgeschriebenen Lesetransaktion ohne Zeilenversionskontrolle. Wenn die Datenzeile die Aktualisierungskriterien nicht erfüllt, wird die Aktualisierungssperre für diese Zeile aufgehoben und die nächste Zeile wird gesperrt und gescannt.

Aktualisierungssperre (U): Ein Sperrmodus, der das Auftreten von Deadlocks verhindert. Bei zwei Transaktionen, die eine Datenressource lesen und ändern, kann die Verwendung von gemeinsamen und exklusiven Sperren manchmal zu Deadlocks führen, während die Verwendung von Aktualisierungssperren das Auftreten von Deadlocks verhindert. Die Aktualisierungssperre einer Ressource kann jeweils nur einer Transaktion zugewiesen werden. Wenn die Ressource geändert werden muss, wird die Aktualisierungssperre zu einer exklusiven Sperre, andernfalls wird sie zu einer gemeinsamen Sperre.

h ttps:// docs.microsoft.com/zh-cn/sql/relational-databases/sql-server-transaction-locking-and-row-versioning-guide?view=sql-server- ver15#Verhalten-beim-ändern-von-Daten

Der Code Bauer Netzwerk, nur in den Prozess der Praxis veröffentlicht, stieß auf technische Schwierigkeiten, nicht in die Irre führen andere.
Bänke
楼主|发表于 2021-1-28 17:30:51|只看该作者
Frage:

udpate a
set spalte1 = 1
wo idx = 1
Wenn der Sqlserver die Update-Anweisung ausführt, sperrt er die gesamte Tabelle, richtig?

Analysieren:

Schauen Sie sich die Tabellenstruktur an, wenn es keinen Primärschlüssel gibt, können nicht nur Zeilen gesperrt werden
Der Code Bauer Netzwerk, nur in den Prozess der Praxis veröffentlicht, stieß auf technische Schwierigkeiten, nicht in die Irre führen andere.
ugg boots sale
Bodenbelag
楼主|发表于 2023-5-2 11:47:24|只看该作者
Entity Framework Abfrage-Optimierung WITH(NOLOCK)
h ttps:// www.itsvse.com/thread-9513-1-1.html
Ich bin mir nicht sicher, ob Sie das Beste daraus machen können, aber ich bin sicher, dass Sie das Beste daraus machen können.
Sie müssen sich anmelden, bevor Sie zurückschreiben können Anmelden | Registrieren

D iese Version der integralen Regeln


Disclaimer: Alle Software, Programmierung Materialien oder Artikel durch den Code Landwirt Netzwerk veröffentlicht wird, um Studien-und Forschungszwecken beschränkt; die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, da sonst alle Folgen bitte Benutzer verantwortlich. Diese Website Informationen aus dem Netzwerk, Urheberrechtsstreitigkeiten hat nichts mit dieser Website zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Herunterladen vollständig von Ihrem Computer entfernen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte die echte Software, kaufen Sie die Registrierung und erhalten Sie einen besseren echten Service. Wenn es irgendeine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail, um damit umzugehen.

E-Mail To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-19 00:22

SchnellantwortZurück zum AnfangZurück zur Liste