Was ist eine Transaktion?
Isolierung und Isolierungsebenen Wenn es um Transaktionen geht, denken Sie bestimmt an ACID (Atomicity, Consistency, Isolation, Durability). Heute sprechen wir über das I, das für „Isolation“ steht. Wenn mehrere Transaktionen gleichzeitig in einer Datenbank ausgeführt werden, können Dirty Reads, nicht wiederholbare Reads und Phantom Reads auftreten. Um diese Probleme zu lösen, wurde das Konzept der „Isolationsebene“ eingeführt. Je stärker die Isolationsstufe, desto schlechter die Leistung. Daher muss ein Gleichgewicht zwischen Leistung und Isolationsstufe gefunden werden. Zu den SQL-Standardtransaktionsisolationsebenen gehören:
Der Hauptgrund besteht darin, dass es schwierig ist, zwischen festgeschriebenem und wiederholbarem Lesen zu unterscheiden. Sehen wir uns daher ein kleines Beispiel an. Erstellen Sie zunächst eine Tabelle und fügen Sie Daten ein 1 Datenbanktest erstellen; Test verwenden; Tabelle erstellen Test (ID int Primärschlüssel); in Test(ID) Werte(1) einfügen;
Schauen wir uns die unterschiedlichen Rückgabeergebnisse von Transaktion A unter unterschiedlichen Isolationsstufen an, nämlich die Rückgabewerte von V1, V2 und V3 in der Abbildung.
In der Datenbank wird eine Ansicht erstellt und das logische Ergebnis der Ansicht wird beim Zugriff darauf verwendet. Unter der Isolationsebene „wiederholbares Lesen“ wird diese Ansicht beim Start der Transaktion erstellt und während der gesamten Transaktion verwendet. In der Isolationsebene „Read Committed“ wird diese Ansicht zu Beginn jeder SQL-Anweisungsausführung erstellt. Hierbei ist zu beachten, dass die Isolationsebene „Read Uncommitted“ den aktuellsten Wert im Datensatz direkt und ohne das Konzept einer Ansicht zurückgibt, während die Isolationsebene „serialisierbar“ Sperren direkt verwendet, um parallele Zugriffe zu vermeiden.
Angenommen, Sie verwalten eine Tabelle mit persönlichen Bankkonten. In einer Tabelle wird der Saldo am Ende jedes Monats gespeichert, in der anderen Tabelle die Rechnungsdetails. Zu diesem Zeitpunkt müssen Sie eine Datenkorrektur durchführen, das heißt, feststellen, ob die Differenz zwischen dem Saldo des Vormonats und dem aktuellen Saldo mit den Rechnungsdetails dieses Monats übereinstimmt. Sie müssen hoffen, dass selbst wenn ein Benutzer während des Korrekturlesevorgangs eine neue Transaktion durchführt, Ihre Korrekturleseergebnisse dadurch nicht beeinträchtigt werden. Implementierung der Transaktionsisolation In MySQL wird tatsächlich für jeden Datensatz ein Rollback-Vorgang aufgezeichnet, wenn dieser aktualisiert wird. Der neueste Wert im Datensatz kann verwendet werden, um durch einen Rollback-Vorgang den Wert des vorherigen Status abzurufen. Angenommen, ein Wert wird nacheinander von 1 in 2, 3 und 4 geändert. In diesem Fall entsteht im Rollback-Protokoll ein Eintrag ähnlich dem folgenden. Der aktuelle Wert ist 4, aber bei der Abfrage dieses Datensatzes haben Transaktionen, die zu unterschiedlichen Zeiten gestartet wurden, unterschiedliche Leseansichten. Wie in der Abbildung gezeigt, lauten die Werte dieses Datensatzes in den Ansichten A, B und C jeweils 1, 2 und 4. Derselbe Datensatz kann im System mehrere Versionen haben, was der Multi-Version Concurrency Control (MVCC) der Datenbank entspricht. Um für die Lese-Ansicht A 1 zu erhalten, müssen Sie alle Rollback-Operationen in der Abbildung nacheinander ausführen, um den aktuellen Wert zu erhalten. Selbst wenn es eine andere Transaktion gibt, die 4 in 5 ändert, gerät diese Transaktion nicht mit den Transaktionen in Konflikt, die den Lese-Ansichten A, B und C entsprechen.
Löschen Sie es, wenn es nicht benötigt wird. Mit anderen Worten: Das System bestimmt, dass die Rollback-Protokolle gelöscht werden, wenn keine Transaktion mehr diese Rollback-Protokolle benötigt.
Dies ist der Fall, wenn im System keine Lese-Ansicht vorhanden ist, die vor diesem Rollback-Protokoll liegt.
Transaktionen bedeuten, dass im System sehr alte Transaktionsansichten vorhanden sind. Bevor die Transaktion festgeschrieben wird, müssen die Rollback-Datensätze beibehalten werden, wodurch viel Speicherplatz belegt wird. Darüber hinaus belegen Transaktionen Sperrressourcen und können zum Absturz der Datenbank führen. Oben finden Sie die Details, die Sie über die Transaktionsisolierung von MySQL wissen müssen. Weitere Informationen zur Transaktionsisolierung von MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Ein kurzer Vortrag über die Variablenförderung in JavaScript
>>: Einfaches Tutorial zu den Firewall-Einstellungen unter Ubuntu 20.04 (Anfänger)
Problem: Das PHP-Programm auf einem Server kann k...
Inhaltsverzeichnis Vorwort 1. 404 Seite 1. Ursach...
Inhaltsverzeichnis Zyklusvergleich Verwendung Zus...
Inhaltsverzeichnis rahmen Erstklassiges Fehlerrep...
Inhaltsverzeichnis Überblick Typzusicherungen in ...
1. Commonjs Commonjs ist ein benutzerdefiniertes ...
Während meines Praktikums im letzten Studienjahr ...
Inhaltsverzeichnis Vorwort Vorbereitende Vorberei...
Dieser Artikel veranschaulicht anhand von Beispie...
Weitergabe von Daten Welche Art von Daten müssen ...
Verwenden von mock.js im Vue-Projekt Auswahl des ...
1. Installationsschritte für MySQL-Version 8.0.12...
MySQL-Datenbank meldet FEHLER 1045 (28000): Zugri...
In diesem Artikelbeispiel wird der spezifische Co...
Die Docker-Veröffentlichungsmethode bietet viele ...