Vier Hauptmerkmale von PHP-Transaktionen
Eine Transaktion ist eine Reihe atomarer SQL-Abfragen oder eine unabhängige Arbeitseinheit.
Atomizität:
Eine Transaktion ist die logische Arbeitseinheit der Datenbank, und ihre Änderungen an der Datenbank werden entweder alle oder keine ausgeführt.
Konsistenz:
Der Zustand der Datenbank erfüllt alle Integritätsbeschränkungen vor und nach der Transaktion.
Isolierung:
Gleichzeitig ausgeführte Transaktionen sind isoliert und eine hat keinen Einfluss auf die andere. Wenn zwei Transaktionen gleichzeitig ausgeführt werden und dieselbe Funktion ausführen, stellt die Transaktionsisolation sicher, dass jede Transaktion im System denkt, dass nur diese Transaktion das System verwendet. Diese Eigenschaft wird manchmal als Serialisierung bezeichnet. Um Verwechslungen zwischen Transaktionsvorgängen zu vermeiden, müssen Anforderungen serialisiert oder deserialisiert werden, sodass jeweils nur eine Anforderung für dieselben Daten vorliegt.
Durch Festlegen der Isolationsstufe der Datenbank können unterschiedliche Isolationseffekte erzielt werden.
Dauerhaftigkeit:
Nach Abschluss der Transaktion bleiben die durch die Transaktion an der Datenbank vorgenommenen Änderungen in der Datenbank erhalten und werden nicht zurückgesetzt.
Parallelitätsprobleme in PHP-Transaktionen
1. Dirty Read
Transaktion A liest die von Transaktion B aktualisierten Daten B macht den Vorgang rückgängig und die von A gelesenen Daten sind fehlerhafte Daten.
2. Nicht wiederholbares Lesen
Transaktion A liest dieselben Daten mehrmals und Transaktion B aktualisiert die Daten während der mehrfachen Lesevorgänge von Transaktion A. Und festschreiben, Dies führt zu inkonsistenten Ergebnissen, wenn Transaktion A dieselben Daten mehrmals liest.
3. Phantomlesen
Systemadministrator A hat die Ergebnisse aller Schüler in der Datenbank von spezifischen Ergebnissen in ABCDE-Noten geändert, aber Systemadministrator B hat die Ergebnisse zu diesem Zeitpunkt geändert Als Systemadministrator A die Änderung abschloss, stellte er fest, dass es noch einen weiteren Datensatz gab, der nicht geändert wurde. Dies wird als Phantomlesung bezeichnet.
Zusammenfassung: Nicht wiederholbares Lesen und Phantomlesen werden leicht verwechselt. Beim nicht wiederholbaren Lesen liegt der Schwerpunkt auf der Änderung, während sich das Phantomlesen auf das Hinzufügen oder Löschen konzentriert. Um das Problem des nicht wiederholbaren Lesens zu lösen, müssen Sie nur die Zeilen sperren, die die Bedingungen erfüllen. Um das Problem des Phantomlesens zu lösen, müssen Sie die Tabelle sperren.
Empfohlenes Tutorial: PHP-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWas ist eine PHP-Transaktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!