1. ACID
Atomizität
Atomizität: Eine Transaktion wird als unteilbare Mindestarbeitseinheit betrachtet, und die gesamte Transaktion ist es Entweder alle ausführen oder ein Rollback durchführen, wenn alle fehlschlagen.
Konsistenz
Konsistenz: Die Datenbank wechselt immer von einem konsistenten Zustand in einen anderen konsistenten Zustand. Selbst wenn beispielsweise der Geldabhebungsvorgang fehlschlägt, weil die Transaktion nicht festgeschrieben wurde, werden die durch die Transaktion vorgenommenen Änderungen nicht in der Datenbank gespeichert und die Daten befinden sich immer noch im Zustand vor der Ausführung der Transaktion. Wenn die Transaktion erfolgreich ausgeführt wird, bleiben die Daten nach der Ausführung unverändert.
Isolation
Isolation: Von einer Transaktion vorgenommene Änderungen sind für andere Transaktionen nicht sichtbar, bevor sie festgeschrieben werden.
Dauerhaftigkeit
Dauerhaftigkeit: Sobald eine Transaktion festgeschrieben wurde, werden ihre Änderungen dauerhaft in der Datenbank gespeichert.
Hinweis
Ebenso wie Aktualisierungen der Sperrgranularität den Systemaufwand erhöhen, erfordert die Transaktionsverarbeitung auch mehr zusätzliche Arbeit durch das Datenbanksystem. Eine Datenbank, die ACID unterstützt, erfordert normalerweise eine höhere CPU-Rechenleistung und benötigt mehr Arbeitsspeicher und Speicherplatz als eine Datenbank, die ACID nicht unterstützen muss. Daher können Benutzer die verschiedenen Datenbank-Engines von MySQL in verschiedenen Anwendungsszenarien auswählen und flexibel sein.
2. Isolationsstufe
Im SQL-Standard sind 4 Isolationsstufen definiert. Jede Ebene der Transaktionsisolation entspricht der Sichtbarkeit der von der Transaktion innerhalb und zwischen Transaktionen vorgenommenen Änderungen. Je niedriger die Isolationsstufe, desto stärker ist die Parallelität und desto geringer ist der Systemaufwand.
Nicht festgeschrieben lesen
Nicht festgeschrieben lesen: Bei Transaktionen auf dieser Isolationsstufe können andere Transaktionen während des Datenänderungsprozesses die Daten weiterhin lesen, auch wenn sie nicht festgeschrieben sind. Transaktionen, die nicht festgeschriebene Daten lesen können, werden auch als Dirty Reads bezeichnet. Da Dirty Reads in tatsächlichen Anwendungen viele Probleme verursachen können, wird diese Isolationsstufe im Allgemeinen selten verwendet.
Lesen festgeschrieben
Festgeschriebenes Lesen: (Allgemeine Datenbank-Standardtransaktionsebene) Erst nachdem die aktuelle Transaktion ausgeführt und die Daten übermittelt wurden, können andere Transaktionen die Daten lesen. Es wird auch als nicht wiederholbares Lesen bezeichnet, da zwei verschiedene Abfragen, die von anderen Transaktionen ausgeführt werden, zu zwei unterschiedlichen Ergebnissen führen können (einmal vor Ausführung der Transaktion und einmal nach Ausführung der Transaktion gelesen).
Wiederholbares Lesen
Wiederholbares Lesen: (Mysqls Standardisolationsstufe) löst das Problem von Dirty Reads. Diese Stufe stellt sicher, dass die Ergebnisse mehrerer Lesevorgänge in derselben Transaktion konsistent sind. Aber das Phantomleseproblem ist immer noch nicht lösbar. Phantom-Lesen: Wenn Transaktion A Daten in einem bestimmten Bereich liest, führt Transaktion B Einfüge- und andere Aktualisierungsvorgänge für den Datenbereich durch. Wenn Transaktion A den Datensatzbereich erneut liest, erfolgt ein Phantom-Lesen.
Serialisierbar
Serialisierbar: Beim Lesen jeder Datenzeile wird eine Sperre hinzugefügt, um die serielle Ausführung der Transaktion zu erzwingen, um Phantomleseprobleme zu vermeiden. Es ist jedoch anfällig für Zeitüberschreitungen und Sperrkonkurrenzprobleme. Es gibt auch relativ wenige Anwendungen und diese Ebene wird nur verwendet, wenn Datenkonsistenz und keine Parallelität besonders erforderlich sind.
3. Mysql legt Transaktionsisolationsstufe fest
Transaktionsisolationsstufe festgeschrieben lesen
Neue Isolation Die Ebene wird wirksam, wenn die Ausführung der nächsten Transaktion beginnt. Wenn Sie die Isolationsstufe der aktuellen Transaktion ändern müssen, können Sie die Konfigurationsdatei ändern. Darüber hinaus wurden im vorherigen Blog zwei Speicher-Engines vorgestellt, die von MySQL bereitgestellte Transaktionen unterstützen: InnoDB und NDB Cluster.
Das Obige ist der Inhalt der MySQL-Datenbankoptimierung (2) – MySQL-Transaktionen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!