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

Ansehen: 12282|Antwort: 0

[Quelle] SQL Server legt die Transaktionsisolationsstufe fest

[Link kopieren]
Veröffentlicht am 05.02.2021 11:53:34 | | | |
Entitätsrahmen-Abfrageoptimierung WITH(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

Datenbanksperren NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX
https://www.itsvse.com/thread-9519-1-1.html
Das Maß an Isolation von Transaktionen in SQL Server und deren Beziehung zu Dirty Reads, nicht wiederholbaren Reads, Phantomreads usw. (Codeargumente und Zeitsequenzen)

Indem wir diese Probleme verstehen, die im Falle gleichzeitigen Zugriffs auf die Datenbank auftreten können, können wir das Konzept der Datenbankisolationsebene weiterhin in Laiensprachen verstehen: Wie möchten Sie gleichzeitige Transaktionen isolieren und inwieweit auch? Wenn zum Beispiel Dirty Reads toleriert werden können oder man nicht möchte, dass gleichzeitige Transaktionen Dirty Reads haben, können diese auf die Isolationsstufe gesetzt werden, um die Isolation zwischen gleichzeitigen Transaktionen locker oder schwerwiegend zu machen.

Je höher das Isolationsniveau, desto geringer ist die Wahrscheinlichkeit, schmutzige oder unvollständige Daten zu lesen, aber desto schwerwiegender ist die Leistungsverschlechterung in hochzeitgleichen Systemen. Je niedriger das Isolationsniveau, desto größer ist die Leistungsverbesserung im Nebenzeitsystem, aber die Daten selbst können unvollständig sein.

In SQL Server 2012 kann man die Isolationsstufe einer Transaktion (von niedrig auf hoch) mit folgender Syntax festlegen:

SETZE TRANSAKTIONSISOLATIONSSTUFE
    { LESEN UNVERBINDLICH
    | LESEN ENGAGIERT
    | WIEDERHOLBARE LEKTÜRE
    | SNAPSHOT
    | SERIALISIERBAR
    }
[ ; ]
Zuerst ein neues Testskript erstellen, eine Datenbank erstellen und Testdaten wie folgt einfügen:



Erstelle ein neues Fenster A, eine Transaktion öffnen, die Aktualisierungsoperation ausführen und 10 Sekunden warten, bevor Sie sich festlegen, lautet der Code wie folgt:

Erstelle ein neues Fenster B, setze die Transaktion READ UNCOMMITTED (uncommitted read, die niedrigste Stufe, das einfache Problem ist das Dirty Reading, weil sie die Daten lesen kann, die durch andere Transaktionen modifiziert, aber nicht committed sind.) Es tut dasselbe wie die Einstellung (NOLOCK) in der SELECT-Anweisungsobjekttabelle in einer Transaktion. Abfrage der Daten, der Code sieht wie folgt aus:

Erstelle ein neues Fenster C, die Daten direkt abfragen, wie folgt:

Im Gegenzug gilt:Führe die Fenster A, B und C aus und stelle fest, dass Fenster B beim Aktualisieren der Daten sofort Daten zurückgeben kann (Es ist möglich, dass die Messung schmutzige Daten sind), muss das C-Fenster warten, bis das A-Fenster die Ausführung abgeschlossen hat.die Daten zurückgeben, wie in der untenstehenden Abbildung gezeigt:


(Fenster B)


(Fenster C)

(Ende)





Vorhergehend:Redis-Persistenzunterschied zwischen RDB und AOF
Nächster:MySQL exportiert die Abfrageergebnisse in eine Datei
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