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. HaltbarkeitWenn eine Transaktion übermittelt wird, werden die Änderungen für immer in der Datenbank gespeichert.
4 . Transaktionsisolationsstufe4-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ängeDie 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 dieSpeicher-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 TransaktionenTransaktionen 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
MyISAM
7. 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
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!