Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 10821|Antwort: 0

[Quelle] sql SELECT

[Link kopieren]
Veröffentlicht am 08.01.2016 17:58:31 | | |

Früher habe ich gesehen, wie meine erfahrenen Entwickler WITH (NOLOCK) beim Abfragen in SQL Server verwendet haben und mich gefragt, warum sie das verwenden. Jetzt habe ich es untersucht und festgestellt, dass es nützlich ist, um die Leistung bei der Ausführung der Abfrage zu verbessern. Allerdings gibt es einen Nachteil, es zu verwenden. Der Nachteil ist, dass man sich nicht sicher sein kann, ob man die Daten erhält, die gerade in der Tabelle aktualisiert werden, d. h. ohne Sperrschutz kann man nicht garantieren, dass die Daten nicht vorhanden sind sich während der laufenden Abfrage ändert. Ich habe auf diesen Link verwiesen und fand ihn ziemlich nützlich.

Um die Leistung von SQL-Abfragen generell zu verbessern, ist die erste Überlegung, einen Index zu erstellen. Tatsächlich kann neben der Einrichtung von Indizes auch das Hinzufügen eines Abschnitts WITH (NOLOCK) zur Syntax beim Setzen von SQL-Befehlen das Phänomen verbessern, dass Datensätze in einer Umgebung mit vielen Online-Abfragen LOCKED werden und somit die Abfrageleistung verbessern.

Allerdings sollte man beachten, dass SQL SELECT mit (NOLOCK) eine verschmutzte Lesung verursachen kann.

Zum Beispiel:




Weil SQL Server die entsprechende Lock-Konsistenzprüfung durchführt. Um die Gesamtleistung der Datenbankabfrage zu verbessern, fügen Sie WITH (NOLOCK) am Ende des Tabellennamens in Ihrer SELECT-Syntax hinzu, obwohl auch (NOLOCK) akzeptabel ist, aber Microsoft empfiehlt dennoch WITH.

Zusätzlich zum einfachen SELECT kannst du auch die SELECT-Syntax mit JOIN verwenden. Aber DELETE, INSERT, UPDATE und andere Befehle, die Transaktionen erfordern, sind nicht gut...

Einige Dateien besagen, dass die SQL-Abfrageeffizienz mit WITH (NOLOCK) um 33 % gesteigert werden kann.
Das Hinzufügen von WITH (NOLOCK) signalisiert SQL Server, dass unser SELECT-Befehl den Transaktionssperrezustand der aktuellen Tabelle nicht berücksichtigen muss, sodass die Leistung deutlich verbessert wird und das Sperrphänomen des Datenbanksystems deutlich reduziert wird (einschließlich Deadlock).

Eine Sache zu beachten ist, dass WITH (NOLOCK) die Transaktionssperre der aktuellen Tabelle nicht berücksichtigt, sodass bei Daten in mehreren Phasen einer Transaktion (z. B. eine Transaktion über mehrere Tabellen – > wie ein Auszahlungssystem) WITH (NOLOCK) die Daten ignoriert, die den Transaktionsprozess gerade verarbeiten...

Um es klar zu sagen: Wenn NoLock verwendet wird, kann man Daten lesen, die zwar geändert wurden, aber die Transaktion noch nicht abgeschlossen ist. Daher sollten Sie, wenn Sie die Echtzeitintegrität von Transaktionsdaten berücksichtigen müssen, sorgfältig über die Verwendung von WITH (NOLOCK) nachdenken.

Wenn Sie keine Transaktionen berücksichtigen müssen, könnte WITH (NOLOCK) eine nützliche Referenz sein.

Anmerkung 1: MIT ( < table_hint > )
Spezifiziert den Tabellenscan, einen oder mehrere vom Abfrageoptimierer verwendeten Indizes,
Oder vom Abfrageoptimierer, um diese Datentabelle zu nutzen und den Sperrmodus für diese Anweisung zu verwenden.

Hinweis 2: WITH (NOLOCK) entspricht READ UNCOMMITTED

Zum Schluss sprechen wir über einige kleine Unterschiede zwischen Nolock und with(nolock):
1: Synonyme in SQL05, nur mit (nolock), werden unterstützt;
2: mit (nolock) wird sehr einfach geschrieben und dann der Index angegeben.
Beim Abfragen von Anweisungen über Server hinweg kann man nicht mit (nolock), sondern nur nolock verwenden
Bei Abfragen auf demselben Server können sowohl mit (nolock) als auch mit nolock verwendet werden
Zum Beispiel
SQL-Code
wählen * aus [IP].a.dbo.table1 mit (nolock). Das zeigt dir den Fehler select * aus a.dbo.table1 mit (nolock). Das funktioniert




Vorhergehend:C# verbirgt die mittlere Ziffer der ID-Nummer
Nächster:jquery lädt JS mit Ajax
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com