Beispielvorgang für nicht festgeschriebenes Lesen - Nicht festgeschriebenes Lesen 1. Öffnen Sie zwei MySql-Eingabeaufforderungszeilen, geben Sie dieselbe Datenbank ein und überprüfen Sie wie folgt, ob der aktuelle Tabelleninhalt dieselben Daten enthält: 2. Führen Sie select @@tx_isolation an beiden Enden A und B aus. Überprüfen Sie die aktuelle Standardisolationsstufe. Sie werden feststellen, dass beide Wiederholbares Lesen – Wiederholbares Lesen – (Das wiederholte Lesen der Daten, die innerhalb der aktuellen Transaktion zum ersten Mal gelesen wurden, wird als wiederholbares Lesen bezeichnet.) 3. Ändern Sie die Isolationsebene von Ende A in readuncommitted – read uncommitted. Dadurch können Sie Daten lesen, die von anderen nicht übermittelt wurden. Legen Sie die Transaktionsisolierungsebene „Lesen nicht fest“ fest. Führen Sie auf dem grünen MySql5.5 Folgendes aus: Legen Sie die Isolationsebene für Sitzungstransaktionen fest und lesen Sie nicht fest. Überprüfen Sie anschließend, ob die Änderungen vorgenommen wurden: 4. Starten Sie Transaktionen an beiden Enden A und B Transaktion starten; 5. Ändern Sie eine Datenzeile auf der B-Seite wie: Aktualisiere Stud Setname='Jhon', wobei ID=1 ist; Führen Sie dann die Abfrage auf Seite A aus: select * from stud; 6. Zu diesem Zeitpunkt führt die B-Seite den Rollback-Vorgang erneut aus Zurückrollen; Fragen Sie dann Ende A ab und stellen Sie fest, dass die Daten zu den vorherigen Daten zurückgekehrt sind. Das ist eine schmutzige Lektüre : 7. Wenn die von der B-Seite geschriebenen neuen Daten nicht übermittelt werden, kann die A-Seite sie auch abfragen. Dies wird als Phantomlesen bezeichnet. Prozess zum Lesen des festgeschriebenen Vorgangs: -read COMMITTED 1. Prüfen Sie, ob A und B konsistent sind: 2. Ändern Sie die Isolationsebene von Ende A (links) auf „readcommitted“. Festlegen der Transaktionsisolationsebene, Lesen festgeschrieben; Starten Sie eine Transaktion auf Seite A: Transaktion starten; Starten Sie eine Transaktion auf Seite B 3. Abfrage am Ende A: Wählen Sie * fromstud; Ändern Sie eine Datensatzzeile auf der B-Seite und senden Sie sie ab. Aktualisieren Sie Stud Setname='itcast', wobei ID=1 ist; Gehen Sie zurück zum Ende der Abfrage A und stellen Sie fest, dass die Ergebnisse der beiden Abfragen in derselben Transaktion unterschiedlich sind: Beispiel für wiederholbares Lesen 1. Überprüfen Sie, ob die Isolationsstufe von Ende A ein wiederholbares Lesen ist: Auswählen@@tx_isolation; 2. Erste Abfrage auf der A-Seite in der offenen Transaktion. Ändern Sie dann den Inhalt der Datenbank auf der B-Seite. Führen Sie abschließend in derselben Transaktion am Ende A eine erneute Abfrage durch und stellen Sie sicher, dass die Ergebnisse konsistent sind. Serialisierbar ist die höchste Isolationsstufe 1. Stellen Sie die Isolationsstufe auf Serialisierbar am Ende A ein Legen Sie die serialisierbare Transaktionsisolationsebene fest. Öffnen Sie eine Transaktion auf der A-Seite und fragen Sie die Stud-Tabelle ab. Öffnen Sie eine Transaktion auf der B-Seite und schreiben Sie eine Datensatzzeile. Zu diesem Zeitpunkt wird festgestellt, dass der Code von B nicht ausgeführt wurde, da er auf die Übermittlung durch A wartet, bevor er ausgeführt wird. Ähnlich dem Konzept der Thread-Synchronisation Diese vier Isolationsebenen werden mithilfe unterschiedlicher Sperrtypen implementiert. Beim Lesen derselben Daten treten wahrscheinlich Probleme auf. Zum Beispiel: Dirty Read: Eine Transaktion hat ein Datenelement aktualisiert und eine andere Transaktion liest zu diesem Zeitpunkt dieselben Daten. Aus irgendeinem Grund führt die vorherige Transaktion einen RollBack für den Vorgang aus und die von der zweiten Transaktion gelesenen Daten sind falsch. Nicht wiederholbares Lesen: Die Daten zwischen zwei Abfragen in einer Transaktion sind inkonsistent. Dies kann daran liegen, dass eine Transaktion die Originaldaten zwischen den beiden Abfragen aktualisiert hat. Phantom Read: Die Anzahl der Dateneinträge in zwei Abfragen einer Transaktion ist inkonsistent. Beispielsweise fragt eine Transaktion mehrere Datenzeilen ab, während eine andere Transaktion zu diesem Zeitpunkt mehrere neue Datenzeilen einfügt. Bei der nächsten Abfrage findet die vorherige Transaktion mehrere Datenzeilen, die sie vorher nicht hatte. Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, danke für Ihre Unterstützung dieser Site! Das könnte Sie auch interessieren:
|
<<: Linux-Grundlagen-Tutorial: Sonderberechtigungen SUID, SGID und SBIT
>>: So verwenden Sie Balkendiagramme in Vue und ändern die Konfiguration selbst
Inhaltsverzeichnis 1. Passen Sie das Netzwerk an,...
Es ist sehr üblich, Bilder auf einer Seite hervor...
Inhaltsverzeichnis 1. Browserunterstützung 2. Exp...
Ergebnisse erzielen Schritt 1. Ursprüngliche inde...
MySQL-Daemon konnte nicht gestartet werden – Fehl...
Like bedeutet auf Chinesisch „wie“, aber wenn es ...
In diesem Artikel wird der spezifische Code von j...
Problem: Die über IIS veröffentlichte Website wir...
Inhaltsverzeichnis Vorwort Kann typeof den Typ ko...
Ich habe kürzlich bei einem praktischen Trainings...
1: django-admin.py startproject Projektname 2: CD...
Inhaltsverzeichnis DATETIME ZEITSTEMPEL Wie man w...
1. So überwachen Sie MySQL-Deadlocks in Produktio...
Beim letzten Mal fragte ein sehr fleißiger Fan, o...
Nach der ersten Installation von Wamp können alle...