Heim  >  Artikel  >  Datenbank  >  Neues Verständnis von MYSQL-Datenbanktransaktionen

Neues Verständnis von MYSQL-Datenbanktransaktionen

黄舟
黄舟Original
2017-02-28 13:39:431350Durchsuche

Das Konzept der Transaktion: eine Reihe von Vorgängen, die von einer einzigen logischen Arbeitseinheit entweder vollständig oder gar nicht ausgeführt werden. Ein einfaches Verständnis besteht darin, dass jede Datenoperation in der logischen Arbeitseinheit einer Transaktion ausgeführt wird.

Die vier Eigenschaften von Transaktionen: ACID.

A: atomar, Atomizität. Atomarität betont die Unteilbarkeit und abstrahiert den Prozess der Ausführung der Datenbank in ein Entitätsobjekt. Wenn dieses Objekt ausgeführt wird, wird es entweder abgeschlossen oder nicht ausgeführt.

Dieser Vorteil stellt die Integrität und Richtigkeit der Daten sicher. Das realste Beispiel ist, dass dieselbe Bankkarte während des Überweisungsvorgangs plötzlich kaputt geht und die Transaktion nicht abgeschlossen werden kann und zurückgesetzt wird. Stellen Sie abschließend sicher, dass sich die Daten im Originalzustand befinden, damit sich das Guthaben auf Ihrer Karte nicht verringert.

C: Konsistent. Das Verständnis von Konsistenz und Atomizität ist grundsätzlich dasselbe und beide dienen dazu, die Integrität der Daten sicherzustellen. Beispielsweise besteht eine Transaktion aus vier Vorgängen: Hinzufügen, Löschen, Ändern und Abfragen. Nur wenn alle vier Vorgänge ausgeführt werden Erfolgreich kann der Status „Erfolgreich“ bleiben. Solange eine Operation nicht ausgeführt werden kann, handelt es sich um einen Fehlerstatus, der die Einheit des Status gewährleistet.

I: Isolierung, Isolation. Für gleichzeitige Transaktionen besteht Isolation. Alle Transaktionen sind voneinander isoliert und beeinflussen sich nicht gegenseitig. Bei hoher Isolation greift eine Transaktion beim Zugriff auf eine andere Transaktion entweder auf den Status vor der Ausführung der Transaktion zu oder auf den Status nach Abschluss der Ausführung. Sie greift nicht auf den Status zwischen der Ausführung der ersten Transaktion zu, führt jedoch dazu Um den Grad der Transaktionsisolation zu verringern, müssen beim Entwurf der Datenbank alle Transaktionen anhand der tatsächlichen Anforderungen gewichtet werden.

Die Isolation von Transaktionen kann von flacher zu tiefer unterteilt werden: READ UNCOMMITTED (nicht festgeschriebener Lesevorgang) --- READ COMMITTED (festgeschriebener Lesevorgang) --- REPEATABLE READ (wiederholbarer Lesevorgang) - - -SERIALIZABLE (Serialisierung)

(1) SERIALIZABLE (Serialisierung)

Bereichssperren hinzufügen (z. B. Tabellensperren, Seitensperren usw.) , ich habe bis zum Ende von Transaktion A keine eingehenden Nachforschungen zur Bereichssperre angestellt. Dies verhindert, dass andere Transaktionen B Einfügungen, Aktualisierungen und andere Vorgänge in diesem Bereich ausführen.
Probleme wie Phantom-Reads, Dirty Reads und nicht wiederholbare Reads treten nicht auf.

(2) REPEATABLE READ (wiederholbares Lesen)

Für die ausgelesenen Datensätze fügen Sie eine gemeinsame Sperre hinzu, bis Transaktion A endet . Andere Versuche von Transaktion B, diesen Datensatz zu ändern, warten, bis Transaktion A endet.

Mögliche Probleme: Beim Ausführen einer Bereichsabfrage kann es zu Phantomlesevorgängen kommen.

(3) READ COMMITTED (Commit-Lesen)

Fügen Sie beim Lesen von Daten in Transaktion A eine gemeinsame Sperre zum Datensatz hinzu, aber lesen Sie Das Ende wird sofort freigegeben. Andere Versuche von Transaktion B, diesen Datensatz zu ändern, warten, bis der Lesevorgang in A endet, ohne dass die gesamte Transaktion A endet. Daher können die Leseergebnisse desselben Datensatzes in verschiedenen Phasen der Transaktion A unterschiedlich sein. ,

Mögliche Probleme: nicht wiederholbares Lesen.

(4) READ UNCOMMITTED (nicht festgeschriebenes Lesen)

Es wird keine gemeinsame Sperre hinzugefügt. Daher kann eine andere Transaktion B denselben Datensatz während des Lesevorgangs von Transaktion A ändern, was dazu führen kann, dass die von A gelesenen Daten beschädigt oder unvollständig oder falsch sind.

Darüber hinaus können die in Transaktion B geänderten (nicht festgeschriebenen) Daten in Transaktion A gelesen werden. Beispielsweise hat Transaktion B den R-Datensatz geändert, er wurde jedoch nicht übermittelt. Wenn zu diesem Zeitpunkt der R-Datensatz in Transaktion A gelesen wird, werden die von B geänderten Daten gelesen.                                                                                                                                                       

D: Dauer, Beharrlichkeit. Nach Abschluss der Transaktionsausführung bleiben die Auswirkungen auf die Daten bestehen, auch wenn das System danach schwerwiegend ausfällt.

Das Obige ist das Neuverständnis von MYSQL-Datenbanktransaktionen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php .cn)!


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
Vorheriger Artikel:MySQL-DatenbankindexNächster Artikel:MySQL-Datenbankindex