1. Was ist eine Transaktion? Eine Datenbanktransaktion (abgekürzt: Transaktion) ist eine logische Einheit im Ausführungsprozess eines Datenbankverwaltungssystems, die aus einer endlichen Folge von Datenbankoperationen besteht. 2. Vier Hauptmerkmale von Transaktionen Dies sind Atomizität, Konsistenz, Isolation und Persistenz. 1. Atomarität Atomarität bedeutet, dass alle in einer Transaktion enthaltenen Vorgänge entweder erfolgreich sein oder fehlschlagen und dann zurückgesetzt werden müssen. Wenn der Transaktionsvorgang erfolgreich ist, muss er daher vollständig auf die Datenbank angewendet werden. Wenn der Vorgang fehlschlägt, kann er keine Auswirkungen auf die Datenbank haben. 2. Konsistenz Konsistenz bedeutet, dass eine Transaktion die Datenbank von einem konsistenten Zustand in einen anderen konsistenten Zustand überführen muss, das heißt, eine Transaktion muss vor und nach der Ausführung in einem konsistenten Zustand sein. Angenommen, der Gesamtbetrag von Benutzer A und Benutzer B beträgt 1000. Unabhängig davon, wie und wie oft A und B Geld überweisen, sollte der Gesamtbetrag der beiden Benutzer nach Abschluss der Transaktion immer noch 1000 betragen. Dies ist die Konsistenz der Transaktion. 3. Isolierung Isolation bedeutet, dass, wenn mehrere Benutzer gleichzeitig auf die Datenbank zugreifen, z. B. wenn sie gleichzeitig dieselbe Tabelle bedienen, die von der Datenbank für jeden Benutzer geöffnete Transaktion nicht durch die Vorgänge anderer Transaktionen gestört werden kann und mehrere gleichzeitige Transaktionen voneinander isoliert werden müssen. In Bezug auf die Transaktionsisolierung bietet die Datenbank mehrere Isolationsebenen, die später vorgestellt werden. 4. Haltbarkeit Persistenz bedeutet, dass nach dem Festschreiben einer Transaktion die Änderungen an den Daten in der Datenbank dauerhaft sind und der Festschreibvorgang der Transaktion auch bei einem Ausfall des Datenbanksystems nicht verloren geht. Wenn wir beispielsweise JDBC zum Bedienen der Datenbank verwenden, wird der Benutzer nach dem Senden der Transaktionsmethode aufgefordert, den Transaktionsvorgang abzuschließen. Wenn unser Programm ausgeführt wird und wir die Eingabeaufforderung sehen, können wir feststellen, dass die Transaktion korrekt gesendet wurde. Selbst wenn zu diesem Zeitpunkt ein Problem mit der Datenbank vorliegt, müssen wir unsere Transaktion vollständig ausführen. Andernfalls tritt ein schwerwiegender Fehler auf, bei dem zwar die Meldung angezeigt wird, dass die Transaktion abgeschlossen ist, die Datenbank die Transaktion aufgrund eines Fehlers jedoch nicht ausführen kann. Dies ist nicht zulässig. 3. MySQL-Isolationsebene LESEN SIE UNVERBINDLICH Auf der Ebene der nicht festgeschriebenen Lesetransaktionen kann eine Transaktion Daten lesen, die nicht von einer anderen Transaktion festgeschrieben wurden. LESEN SIE ENGAGIERT Auf der Ebene der festgeschriebenen Lesetransaktionen kann eine Transaktion Daten lesen, nachdem eine andere Transaktion festgeschrieben wurde. Beispielsweise liest Transaktion A das Namensfeld des Datensatzes mit der ID 1000 als aaa, und dann aktualisiert Transaktion B den Namenswert dieses Datensatzes und schreibt ihn fest. Wenn Transaktion A den Namen erneut liest, lautet der Wert des Namens bbb. Wenn in einer Transaktion ein Feld daher mehrmals gelesen wird, können die erhaltenen Werte unterschiedlich sein. Die doppelt gelesenen Werte vor und nach Transaktion A sind inkonsistent! WIEDERHOLBARES LESEN Auf der Ebene der wiederholbaren Lesetransaktionen ändern sich die Felder, die eine Transaktion wiederholt liest, nicht. Beispielsweise liest Transaktion A den Datensatz mit der ID 1000 und der Name-Wert ist aaa, dann ändert Transaktion B den Namen in bbb und Transaktion B wird festgeschrieben. Wenn Transaktion A den Namen erneut liest, wird sie nicht bbb lesen. Daher ist Transaktion A gleichbedeutend damit, sich in einer unabhängigen Welt zu befinden, und jegliche Änderungen von außen wirken sich nicht auf Transaktion A aus. Wiederholbare Lesevorgänge können jedoch zu Phantom-Lesevorgängen führen. Was sind Phantom-Lesevorgänge? Zum Beispiel: Hinweis: InnoDB in MySQL löst Phantom-Lesevorgänge durch MVCC (Multi-Version Concurrency Control). Darüber hinaus ist die Standardtransaktionsebene von MySQL wiederholbares Lesen und die Standardisolationsebene von Oracle und SQL Server ist Read Committed. SERIALISIERBAR Serialisierbare Transaktionsebene, sperrt jede gelesene Datenzeile Der Vorteil des Sperrens besteht darin, dass es Dirty Reads und Phantom Reads vermeidet und auch die Möglichkeit nicht wiederholbarer Lesevorgänge vermeidet. Durch das Sperren wird jedoch die Parallelität stark reduziert, da nur ein Thread gleichzeitig die Sperre erhalten kann. Dies kann auch viele Timeout-Probleme verursachen. Zusammenfassung: Nicht wiederholbare Lesevorgänge und Phantom-Lesevorgänge können leicht verwechselt werden. Bei nicht wiederholbaren Lesevorgängen stehen Änderungen im Mittelpunkt, während bei Phantom-Lesevorgängen Hinzufügungen oder Löschungen im Mittelpunkt stehen. Um das Problem nicht wiederholbarer Lesevorgänge zu lösen, müssen Sie nur die Zeilen sperren, die die Bedingungen erfüllen. Um das Problem von Phantom-Lesevorgängen zu lösen, müssen Sie die Tabelle sperren. Isolationsstufe:
Je höher die Stufe, desto sicherer sind Ihre Daten, allerdings ist die Leistung geringer. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Docker-Dateispeicherpfad, Befehlsvorgang zum Starten des Containers abrufen
>>: Detaillierte Erklärung zur Verwendung von ElementUI in Vue
Beim Herunterfahren des MySQL-Servers können, abh...
Vorwort In den Anfangsphasen einiger Projekte wer...
Vorwort In der Datenbank sind einige Datentabelle...
Als eines der beliebtesten Front-End-Frameworks i...
Um nach RocketMQ-Images zu suchen, können Sie auf...
Inhaltsverzeichnis 1. Funktionsbeschreibung 2. Üb...
Linux-Dateiberechtigungen Überprüfen wir zunächst...
Wenn der Schlüssel nicht zum v-for-Tag hinzugefüg...
Aus der Tomcat-Konfigurationsdatei können wir ers...
In diesem Artikel sehen wir uns an, wie man mit V...
Installations-Tutorial zur dekomprimierten Versio...
Entwicklungshintergrund: Ich arbeite derzeit an e...
Inhaltsverzeichnis 1. Einleitung 2. Vererbung der...
Einführung Es ist nicht nötig, Redis im Detail vo...
Inhaltsverzeichnis Legen Sie beim Erstellen einer...