Heim > Java > javaLernprogramm > Was bedeutet Java-Transaktion?

Was bedeutet Java-Transaktion?

(*-*)浩
Freigeben: 2019-05-21 17:27:52
Original
2770 Leute haben es durchsucht

Eine Transaktion ist eine Abfolge von Vorgängen für den Zugriff auf die Datenbank. Das Datenbankanwendungssystem vervollständigt den Zugriff auf die Datenbank über Transaktionssätze. Die korrekte Ausführung von Transaktionen führt dazu, dass die Datenbank von einem Zustand in einen anderen übergeht.

Was bedeutet Java-Transaktion?

1. Angelegenheiten müssen den von ISO/IEC festgelegten ACID-Grundsätzen entsprechen.

ACID ist die Abkürzung für Atomizität, Konsistenz, Isolation und Haltbarkeit. Transaktionen müssen den von ISO/IEC festgelegten ACID-Prinzipien entsprechen. ACID ist die Abkürzung für Atomizität, Konsistenz, Isolation und Haltbarkeit.

Atom. Das heißt, Unteilbarkeit, entweder werden alle Transaktionen ausgeführt oder keine. Wenn alle Untertransaktionen der Transaktion erfolgreich übermittelt wurden, werden alle Datenbankvorgänge übermittelt und der Datenbankstatus wird konvertiert. Wenn eine Untertransaktion fehlschlägt, werden die Datenbankvorgänge anderer Untertransaktionen zurückgesetzt, d. h. die Datenbank kehrt zu zurück der Zustand vor der Ausführung der Transaktion. Es findet kein Zustandsübergang statt.

Konsistenz bzw. Stringability. Die Ausführung einer Transaktion wandelt die Datenbank von einem korrekten Zustand in einen anderen um.

Isolation. Bevor die Transaktion korrekt festgeschrieben wird, dürfen Änderungen an den Daten durch die Transaktion keiner anderen Transaktion zur Verfügung gestellt werden, d. h., bevor die Transaktion korrekt festgeschrieben wird, sollten ihre möglichen Ergebnisse keiner anderen Transaktion angezeigt werden .

Beharrlichkeit. Nachdem eine Transaktion korrekt übermittelt wurde, werden ihre Ergebnisse dauerhaft in der Datenbank gespeichert. Auch wenn nach der Übermittlung der Transaktion weitere Fehler auftreten, werden die Verarbeitungsergebnisse der Transaktion gespeichert. ​

Führen Sie eine eingebettete SQL-Anwendung oder ein eingebettetes SQL-Skript aus, und die Transaktion wird automatisch gestartet, wenn die ausführbare SQL-Anweisung zum ersten Mal ausgeführt wird (nachdem die Verbindung zur Datenbank hergestellt oder nachdem die bestehende Transaktion beendet wurde). Nach dem Starten einer Transaktion muss diese vom Benutzer oder der Anwendung, die die Transaktion gestartet hat, explizit beendet werden, es sei denn, es wird ein Prozess namens „Automatisches Festschreiben“ verwendet (in diesem Fall wird jede einzelne ausgegebene SQL-Anweisung angezeigt). ausgeführt wird).

In den meisten Fällen wird eine Transaktion durch die Ausführung einer COMMIT- oder ROLLBACK-Anweisung beendet. Wenn eine COMMIT-Anweisung ausgeführt wird, werden alle seit dem Initiieren der Transaktion an der Datenbank vorgenommenen Änderungen dauerhaft, d. h. sie werden auf die Festplatte geschrieben. Wenn die ROLLBACK-Anweisung ausgeführt wird, werden alle seit dem Start der Transaktion an der Datenbank vorgenommenen Änderungen rückgängig gemacht und die Datenbank wird in den Zustand zurückversetzt, in dem sie sich vor Beginn der Transaktion befand. In beiden Fällen wird garantiert, dass die Datenbank nach Abschluss der Transaktion in einen konsistenten Zustand zurückkehrt.

Es ist wichtig zu beachten, dass Transaktionen zwar eine allgemeine Datenbankkonsistenz gewährleisten, indem sie sicherstellen, dass Änderungen an Daten erst nach erfolgreichem Festschreiben der Transaktion dauerhaft werden, der Benutzer oder die Anwendung jedoch dennoch die Reihenfolge der darin ausgeführten SQL-Vorgänge sicherstellen muss Jede Transaktion führt immer zu einer konsistenten Datenbasis.

2. Das Datenbanksystem unterstützt zwei Transaktionsmodi:

Auto-Commit-Modus: Jede SQL-Anweisung ist eine unabhängige Transaktion, wenn das Datenbanksystem die Ausführung einer SQL-Anweisung abschließt In der Anweisung wird die Transaktion automatisch festgeschrieben.Manueller Commit-Modus: Die Start- und Endgrenze der Transaktion muss explizit vom Datenbank-Client angegeben werden.

Hinweis: Es gibt drei Arten von Datenbanktabellen in MySQL: INNODB, BDB und MyISAM, wobei MyISAM keine Datenbanktransaktionen unterstützt. Die Anweisung zum Erstellen einer Tabelle in MySQL verwendet standardmäßig den Typ MyISAM.

3. Bei mehreren gleichzeitig ausgeführten Transaktionen ,

wenn diese Transaktionen auf dieselben Daten in der Datenbank zugreifen und der erforderliche Isolationsmechanismus nicht übernommen wird führt zu Verschiedenen Parallelitätsproblemen. Diese Parallelitätsprobleme können in die folgenden Kategorien zusammengefasst werden:

Die erste Art verlorener Aktualisierungen: Wenn eine Transaktion widerrufen wird, werden die von anderen Transaktionen übermittelten Aktualisierungsdaten überschrieben.

Dirty Read: Eine Transaktion liest aktualisierte Daten, die von einer anderen Transaktion übermittelt wurden.

Dummy-Lesen: Eine Transaktion liest neu eingefügte Daten, die von einer anderen Transaktion übermittelt wurden. Nicht wiederholbares Lesen: Eine Transaktion liest aktualisierte Daten, die von einer anderen Transaktion übermittelt wurden. Die zweite Art der verlorenen Aktualisierung:

Dies ist ein Sonderfall des nicht wiederholbaren Lesevorgangs, bei dem eine Transaktion die aktualisierten Daten überschreibt, die von einer anderen Transaktion übermittelt wurden.

4. Isolationsstufe

Wenn das Datenbanksystem die Lese-Commited-Isolationsstufe übernimmt, führt dies zu nicht wiederholbaren Lesevorgängen und der zweiten Art von Problemen mit der Parallelität verlorener Updates: Um solche Probleme zu vermeiden, wird im Programm pessimistisches Sperren oder optimistisches Sperren verwendet. Aus Anwendungssicht lassen sich Sperren in folgende Kategorien einteilen:

Serialisierbar: Eine Transaktion kann die von anderen Transaktionen während der Ausführung an der Datenbank vorgenommenen Aktualisierungen nicht sehen. Wiederholbares Lesen: Während der Ausführung kann eine Transaktion neu eingefügte Datensätze sehen, die von anderen Transaktionen übermittelt wurden, sie kann jedoch keine Aktualisierungen bestehender Datensätze durch andere Transaktionen sehen. Read Committed (Festgeschriebene Daten lesen): Während der Ausführung einer Transaktion können Sie neu eingefügte Datensätze sehen, die von anderen Transaktionen festgeschrieben wurden, und Sie können auch Aktualisierungen vorhandener Datensätze sehen, die von anderen Transaktionen festgeschrieben wurden nicht festgeschriebene Daten) ): Während der Ausführung kann eine Transaktion neu eingefügte Datensätze kopieren, die nicht von anderen Transaktionen festgeschrieben wurden, und kann Aktualisierungen vorhandener Datensätze sehen, die nicht von anderen Transaktionen festgeschrieben wurden.

Je höher die Isolationsstufe, desto vollständiger und konsistenter können die Daten garantiert werden, aber desto größer ist auch die Auswirkung auf die Parallelitätsleistung. Bei den meisten Anwendungen können Sie der Isolationsstufe des Datenbanksystems Vorrang auf „Read Commited“ geben, wodurch Dirty Reads vermieden werden können und eine bessere Parallelitätsleistung erzielt wird. Obwohl dies zu Parallelitätsproblemen wie nicht wiederholbaren Lesevorgängen, virtuellen Lesevorgängen und verlorenen Aktualisierungen zweiten Typs führt, können solche Probleme in einzelnen Situationen, in denen solche Probleme auftreten können, von der Anwendung mithilfe pessimistischer Sperren oder optimistischer Sperren gesteuert werden.

Wenn das Datenbanksystem die Lese-Commited-Isolationsstufe übernimmt, führt dies zu nicht wiederholbarem Lesen und der zweiten Art von Problemen mit der Parallelität verlorener Updates. Sie können pessimistische Sperren oder optimistische Sperren in der Anwendung verwenden, um solche Probleme zu vermeiden . Aus Sicht der Anwendung können Sperren in die folgenden Kategorien unterteilt werden:

A. Pessimistische Sperre: bezieht sich auf die Sperrung von in der Anwendung angezeigten Datenressourcen. Obwohl es Parallelitätsprobleme wie verlorene Aktualisierungen und nicht wiederholbare Lesevorgänge verhindert, beeinträchtigt es die Parallelitätsleistung und sollte mit Vorsicht verwendet werden.

B. Optimistische Sperre: Bei der optimistischen Sperre wird davon ausgegangen, dass keine anderen Transaktionen gleichzeitig auf die Datenressource zugreifen, sodass sie vollständig von der Isolationsstufe der Datenbank abhängt die Schleusenarbeiten verwalten. Anwendungen nutzen die Versionskontrolle, um mögliche Parallelitätsprobleme zu vermeiden.

5. Es gibt zwei Möglichkeiten, pessimistisches Sperren zu implementieren.

A. Im Anwendungsprogramm anzeigen und die ausschließliche Verwendung des Datenbanksystems zum Sperren von Datenressourcen festlegen. SQL-Anweisung: Wählen Sie ... für die Aktualisierung aus, verwenden Sie get im Ruhezustand und laden Sie sie beispielsweise in die Datenbanktabelle A Das LOCK-Feld zeigt den Datensatzstatus an. Wenn der Wert „Y“ ist, bedeutet dies, dass der Datensatz durch eine Transaktion gesperrt wurde. Wenn er „N“ ist, bedeutet dies, dass sich der Datensatz in einem Ruhezustand befindet und die Transaktion darauf zugreifen kann . Dies kann durch Hinzufügen eines Sperr-Tag-Felds erreicht werden.

Verwenden Sie die Hibernate-Versionskontrolle, um optimistisches Sperren zu implementieren

Optimistisches Sperren ist ein vom Programm bereitgestellter Mechanismus. Dieser Mechanismus kann nicht nur sicherstellen, dass mehrere Transaktionen gleichzeitig auf Daten zugreifen, sondern auch verhindern, dass die zweite Klasse fehlt Update-Problem.

In Anwendungen können Sie die von Hibernate bereitgestellte Versionskontrollfunktion verwenden. Das -Element in der OR-Zuordnungsdatei verfügt im Allgemeinen über Versionskontrollfunktionen um

zu verwenden

Das obige ist der detaillierte Inhalt vonWas bedeutet Java-Transaktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage