Heim  >  Artikel  >  Datenbank  >  Zusammenfassung einiger Probleme bei der Verarbeitung von Datenbanktransaktionen

Zusammenfassung einiger Probleme bei der Verarbeitung von Datenbanktransaktionen

王林
王林Original
2019-08-19 11:05:491630Durchsuche

Einige Zusammenfassungen zur MySQL-Transaktionsverarbeitung:

1. Was ist eine Transaktion?

MySQL-Transaktionen werden hauptsächlich zur Verarbeitung von Daten mit großen Vorgängen und hoher Komplexität verwendet.

Wenn Sie beispielsweise im Personalverwaltungssystem eine Person löschen, müssen Sie nicht nur die grundlegenden Informationen der Person löschen, sondern auch die Informationen, die sich auf die Person beziehen,

z B. Postfach, Artikel usw. Warten Sie, auf diese Weise stellen diese Datenbankbetriebsanweisungen eine Transaktion dar!

2. Bedingungen für die Verwendung von Transaktionen

Um Transaktionen in MySQL zu verwenden, ist die Unterstützung der Speicher-Engine in MySQL erforderlich MySQL, das Transaktionen unterstützt, umfasst InnoDB, NDB cluster,

. Zu den Speicher-Engines von Drittanbietern gehören PBXT und XtrDB.

3 Merkmale von Transaktionen

3-1. Atomarität

Eine Transaktion muss als unteilbare Mindestarbeitseinheit behandelt werden, und alle Vorgänge in jeder Transaktion müssen dies tun Erfolg oder Misserfolg.

Es ist niemals möglich, dass einige Operationen fehlschlagen und einige Operationen erfolgreich sind.

3-2 🎜>

Konsistenz Genau wie im obigen Beispiel sind die Daten beim Auftreten einer Ausnahme immer noch korrekt. Das heißt, wenn eine Transaktionsausführung fehlschlägt,

werden die Daten nicht beeinträchtigt Die anormale Situation behält immer ihre Korrektheit bei.

3-3. Wenn eine Transaktion nicht übermittelt wurde, ist sie nicht voneinander betroffen .

3-4. Haltbarkeit

Wenn eine Transaktion übermittelt wird, werden die Änderungen für immer in der Datenbank gespeichert.

4 . Transaktionsisolationsstufe

4-1. Änderungen an Daten in einer Transaktion, auch wenn diese Änderung noch sichtbar ist andere Transaktionen. In diesem Fall kann es zu fehlerhaften Lesevorgängen kommen, die die Integrität der Daten beeinträchtigen

Wenn eine Transaktion beginnt, Es können nur andere Transaktionen angezeigt werden, die übermittelt wurden. In diesem Fall kann es zu nicht wiederholbaren Lesevorgängen kommen (die Ergebnisse von zwei Lesevorgängen sind unterschiedlich).

4- 3. Wiederholbare Lesevorgänge

Die Ergebnisse des mehrmaligen Lesens von Datensätzen sind konsistent. Es gibt jedoch eine solche Situation: Wenn eine Transaktion Datensätze in einem liest In einem bestimmten Bereich fügt eine andere Transaktion ein neues Datenelement ein. Wenn die Transaktion die Daten erneut liest, stellt

fest, dass die Daten größer sind als beim ersten Lesen. Dies ist der sogenannte Phantom-Lesevorgänge.

4-4. Seriell ist wie jede Warteschlange und jede Transaktion Wird zur Ausführung in die Warteschlange gestellt, kann die nächste Transaktion erst ausgeführt werden, nachdem die vorherige Transaktion übermittelt wurde.

Obwohl diese Situation das obige Phantomlesen lösen kann, ist es problemlos möglich, jedem Datenelement eine Sperre hinzuzufügen Dies führt zu einer großen Anzahl von Sperrzeitüberschreitungen und Sperrkonkurrenz.

Es ist insbesondere nicht für einige Geschäftsszenarien mit hoher Parallelität geeignet.

4-5. Isolationszusammenfassung

Anhand der obigen Beispiele können wir leicht feststellen, dass sich Dirty Reads und nicht wiederholbare Lesevorgänge auf die Aktualisierung von Daten konzentrieren und Phantom Reads sich auf das Einfügen von Daten konzentrieren.

5 , Transaktionsverarbeitungsmethoden für Mehrere Speicher-Engines

Gemäß den oben genannten Transaktionsnutzungsbedingungen können wir wissen, dass einige Speicher-Engines keine Transaktionen unterstützen, beispielsweise unterstützt die

Speicher-Engine keine Transaktionen

Wenn in einer Transaktion eine transaktionale Speicher-Engine und eine nicht-transaktionale Speicher-Engine verwendet werden, kann der Commit normal fortgesetzt werden, aber das Rollback der nicht-transaktionalen Speicher-Engine zeigt die spezifische Antwortfehlermeldung an Informationen beziehen sich auf die Speicher-Engine

6. So verwenden Sie Transaktionen

Transaktionen in MySQL sind implizit aktiviert, d. h. eine SQL-Anweisung Es handelt sich um eine Transaktion. Wenn die SQL-Anweisung ausgeführt wird, wird die Transaktion explizit aktiviert

MyISAM7. Wie oben erwähnt, werden Transaktionen in MySQL ist implizit aktiviert, was bedeutet, dass jedes unserer SQL automatisch übermittelt wird. Wenn Sie es schließen müssen, müssen Sie die Option

festlegen Transaktion

set session transaction isolation level 隔离级别;

Die oben genannten Fragen zur Datenbanktransaktionsverarbeitung sind für Sie vorbereitet. Weitere verwandte Fragen finden Sie in den entsprechenden Artikeln auf der chinesischen PHP-Website. Danke!

Empfohlene datenbankbezogene Videos:

https://www.php.cn/course/list/51/type/2.html

Das obige ist der detaillierte Inhalt vonZusammenfassung einiger Probleme bei der Verarbeitung von Datenbanktransaktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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