Isolationsebene für Datenbanktransaktionen Es gibt 4 Isolationsstufen für Datenbanktransaktionen, von niedrig bis hoch:
Diese vier Ebenen können die Probleme „Dirty Read“, „Non-Repeatable Read“ und „Phantom Read“ nacheinander lösen. √: Kann erscheinen ×: Wird nicht erscheinen
Hinweis: Wir diskutieren das Szenario der Isolationsebene hauptsächlich, wenn mehrere Transaktionen gleichzeitig ausgeführt werden. Dirty Reads, Phantom Reads und nicht wiederholbare Reads Schmutzige Lektüre: Dirty Read bedeutet, dass, wenn eine Transaktion auf Daten zugreift und diese ändert, und diese Änderung nicht an die Datenbank übermittelt wurde, eine andere Transaktion ebenfalls auf die Daten zugreift und die Daten verwendet. Nicht wiederholbares Lesen: Dabei werden dieselben Daten innerhalb einer Transaktion mehrmals gelesen. Bevor diese Transaktion beendet wird, greift eine weitere Transaktion auf dieselben Daten zu. Daher können die von der ersten Transaktion zweimal gelesenen Daten zwischen den beiden Lesevorgängen in der ersten Transaktion aufgrund der Änderung der zweiten Transaktion unterschiedlich sein. Dies bedeutet, dass die in einer Transaktion zweimal gelesenen Daten unterschiedlich sind; deshalb spricht man vom nicht wiederholbaren Lesen. (Das heißt, derselbe Dateninhalt kann nicht gelesen werden) Phantomlesung: Es bezeichnet ein Phänomen, das auftritt, wenn Transaktionen nicht unabhängig voneinander ausgeführt werden. Beispielsweise ändert die erste Transaktion die Daten in einer Tabelle, und diese Änderung betrifft alle Datenzeilen in der Tabelle. Gleichzeitig ändert die zweite Transaktion auch die Daten in dieser Tabelle, indem sie eine neue Datenzeile in die Tabelle einfügt. Dann kann es passieren, dass der Benutzer bei der ersten Transaktion wie bei einer Halluzination feststellt, dass in der Tabelle immer noch unveränderte Datenzeilen vorhanden sind. Beispiel: Oberfläche: Tabelle erstellen `cc_wsyw126_user_test_isolation_copy` ( `id` int(11) NICHT NULL AUTO_INCREMENT, `Passwort` varchar(64) NOT NULL, `Alter` int(11) NICHT NULL, Primärschlüssel (`id`), SCHLÜSSEL `ix_age` (`Alter`) )ENGINE=MyISAM STANDARD-CHARSET=utf8; Simulierte Daten: INSERT INTO `cc_wsyw126_user_test_isolation_copy` (`Passwort`, `Alter`) WERTE ('1', 1), ('zweiundzwanzig), ('3', 3), ('4', 4); Die erste Transaktion A: Transaktion starten in cc_wsyw126_user_test_isolation_copy (Passwort, Alter) Werte einfügen ('5',5) begehen Die zweite Transaktion B: Transaktion starten Aktualisiere cc_wsyw126_user_test_isolation_copy und setze Alter = 2, wobei Passwort >='2' ist. Wählen Sie * aus cc_wsyw126_user_test_isolation_copy, wobei Kennwort >= „2“ ist. begehen Schritte zum Reproduzieren: Solange die Insert-Anweisung der Transaktion A vor der Select-Anweisung und nach der Update-Anweisung der Transaktion B steht, ist alles in Ordnung. Die MySQL InnoDB-Speicher-Engine implementiert ein Multi-Version Concurrency Control-Protokoll – MVCC (Multi-Version Concurrency Control) sowie eine Next-Key-Locking-Strategie, um Phantom-Lesevorgänge auf der Isolationsebene Repeatable Read (RR) zu verhindern. Wenn Sie Phantom-Lesevorgänge testen möchten, experimentieren Sie mit MyISAM. Wenn in einem gruppierten Index (Primärschlüsselindex) eine eindeutige Einschränkung vorliegt, stuft InnoDB die standardmäßige Next-Key-Sperre auf eine Datensatzsperre herab. Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, danke für Ihre Unterstützung dieser Site! Das könnte Sie auch interessieren:
|
<<: So kapseln Sie die Tabellenkomponente von Vue Element
>>: Einführung in die Nginx-Protokollverwaltung
Docker Compose kann die Orchestrierung von Docker...
Inhaltsverzeichnis Funktion Grundlegende Abfragef...
Inhaltsverzeichnis Vorwort Wie kapselt Antd Kompo...
Vue $set Array-Sammlungsobjektzuweisung In der be...
Es gibt zwei Möglichkeiten, MySQL unter Linux zu ...
Mit dem Befehl „Docker Create“ können Sie einen C...
In diesem Artikel wird erläutert, wie Sie einen I...
Als ich die CPP-Datei zum ersten Mal mit G++ komp...
Inhaltsverzeichnis Vorwort Text 1. Abschluss 1.1 ...
Während der Olympischen Spiele wird IE 8 Beta 2 ve...
Bearbeiten Sie /etc/docker/daemon.json und fügen ...
In diesem Artikel wird der spezifische Code von j...
Der Unterschied zwischen relativ und absolut in H...
Anwendungsschachtelung ungeordneter Listen Code ko...
Wenn MySQL Version 5.0 bereits auf dem Computer v...