MySql8.0 Fehler bei der Transaktionsisolationsebene anzeigenFrageTransaktionsisolationsebene der Datenbankansicht wählen Sie @@global.tx_isolation,@@tx_isolation; Fehler:
Ich verwende MySQL Version 8.0. tx_isolation wurde in Version 8.0 in global.transaction_isolation geändert Der Befehl ändert sich zuwählen Sie @@global.transaction_isolation,@@transaction_isolation; MySQL-Transaktionsisolationsebene (einschließlich mysql8.0+ Einstellungen und Anzeige)Vier Transaktionsisolierungsebenen von MySQL 1. Grundelemente von Transaktionen (ACID)1. Atomarität : Nach dem Start einer Transaktion müssen alle Vorgänge abgeschlossen sein oder überhaupt nicht ausgeführt werden. Es ist unmöglich, dass die Transaktion mittendrin hängen bleibt. Tritt während der Ausführung einer Transaktion ein Fehler auf, wird der Vorgang auf den Zustand vor dem Beginn der Transaktion zurückgesetzt und alle Vorgänge werden so ausgeführt, als wäre nichts geschehen. Mit anderen Worten: Angelegenheiten sind ein unteilbares Ganzes, genau wie die Atome, die wir in der Chemie kennengelernt haben und die die Grundeinheiten der Materie darstellen. 2. Konsistenz : Die Integritätsbeschränkungen der Datenbank werden vor und nach dem Start und Ende der Transaktion nicht verletzt. Wenn A beispielsweise Geld an B überweist, ist es für A nicht möglich, das Geld abzuziehen, B erhält es jedoch nicht. 3. Isolierung : Nur eine Transaktion darf gleichzeitig dieselben Daten anfordern, und es gibt keine Interferenzen zwischen verschiedenen Transaktionen. Wenn A beispielsweise Geld von einer Bankkarte abhebt, kann B kein Geld auf diese Karte überweisen, bevor A den Abhebungsvorgang abgeschlossen hat. 4. Dauerhaftigkeit : Nachdem die Transaktion abgeschlossen ist, werden alle durch die Transaktion durchgeführten Aktualisierungen der Datenbank in der Datenbank gespeichert und können nicht zurückgesetzt werden. 2. Parallelitätsprobleme bei Transaktionen1. Dirty Read : Transaktion A liest die von Transaktion B aktualisierten Daten und dann macht B den Vorgang rückgängig, sodass die von A gelesenen Daten schmutzige Daten sind. 2. Nicht wiederholbares Lesen : Transaktion A liest dieselben Daten mehrmals. Während Transaktion A mehrere Male liest, aktualisiert und speichert Transaktion B die Daten, was zu inkonsistenten Ergebnissen führt, wenn Transaktion A dieselben Daten mehrere Male liest. 3. Phantomlesen : Systemadministrator A ändert die Noten aller Studenten in der Datenbank von bestimmten Punktzahlen in ABCDE-Noten, aber Systemadministrator B fügt zu diesem Zeitpunkt einen Datensatz mit einer bestimmten Punktzahl ein. Wenn Systemadministrator A die Änderung abgeschlossen hat, stellt er fest, dass immer noch ein Datensatz vorhanden ist, der nicht geändert wurde, als ob eine Illusion aufgetreten wäre. Dies wird als Phantomlesen bezeichnet. Zusammenfassung: Nicht wiederholbare Lesevorgänge und Phantom-Lesevorgänge können leicht verwechselt werden. Bei nicht wiederholbaren Lesevorgängen stehen Änderungen im Mittelpunkt, während bei Phantom-Lesevorgängen Hinzufügungen oder Löschungen im Mittelpunkt stehen. Um das Problem nicht wiederholbarer Lesevorgänge zu lösen, müssen Sie nur die Zeilen sperren, die die Bedingungen erfüllen. Um das Problem von Phantom-Lesevorgängen zu lösen, müssen Sie die Tabelle sperren. 3. MySQL-Transaktionsisolationsebene Die Transaktionsisolationsebene ist unterteilt inNicht festgeschriebenes Lesen, festgeschriebenes Lesen, wiederholbares Lesen, serialisierbar . Die vier Ebenen von niedrig bis hoch sind „Read uncommitted“, „Read committed“, „Repeatable read“ und „Serializable“. Diese vier Ebenen können die Probleme von „Dirty Read“, „Non-Repeatable Read“ und „Phantom Read“ nacheinander lösen. Ja : Kann vorkommen. Nein : Wird nicht vorkommen. Nicht festgeschrieben lesen Transaktion A wurde ausgeführt, aber nicht festgeschrieben; Transaktion B fragt die aktualisierten Daten von Transaktion A ab; Transaktion A wird zurückgesetzt; - Es treten fehlerhafte Daten auf Lesen Sie Commitment Transaktion A führt eine Aktualisierung durch; Transaktion B fragt ab; Transaktion A führt erneut eine Aktualisierung durch; Wenn Transaktion B erneut abfragt, sind die Daten zwischen den beiden Malen inkonsistent; - Nicht wiederholbares Lesen Wiederholbares Lesen Unabhängig davon, wie oft Transaktion A ausgeführt wird, ändert sich der Abfragewert von Transaktion B nicht, solange sie nicht festgeschrieben wird. Transaktion B fragt nur den Daten-Snapshot zum Zeitpunkt des Starts von Transaktion B ab. - Phantomlesen Serialisierung Gleichzeitige Lese- und Schreibvorgänge sind nicht zulässig. Während der Schreibvorgang ausgeführt wird, muss der Lesevorgang warten. 4. Datenbankeinstellungen// Aktuelle Transaktionsebene anzeigen (gilt nicht für MySQL-Versionen über 8.0, siehe unten): WÄHLEN SIE @@tx_isolation; //Isolationsebene von MySQL festlegen: Isolationsstufe für Sitzungstransaktionen festlegen; Isolationsstufe für Transaktionen festlegen // Stufe für nicht festgeschriebenes Lesen festlegen: Legen Sie die Isolationsebene für Sitzungstransaktionen fest und lesen Sie nicht fest. //Setzen Sie die Read-Commit-Ebene: Isolationsstufe für Sitzungstransaktionen festlegen, Lesen festgeschrieben; //Stellen Sie die wiederholbare Leseebene ein: Legen Sie die Isolationsstufe für Sitzungstransaktionen fest und erlauben Sie ein wiederholbares Lesen. //Setzen Sie die serialisierbare Ebene: Legen Sie die serialisierbare Isolationsebene für Sitzungstransaktionen fest. MySQL 8.0+ Abfrage der Transaktionsisolationsebene für DatenbankenFragen Sie die Transaktionsisolationsebene gemäß der Methode im MOOC-Kurs mit folgendem Verfahren ab: wählen Sie @@tx_isolation; Ich bin in Sequal Pro, aber es wird ein Fehler angezeigt: Unbekannte Systemvariable „tx_isolation“ Nachdem ich die offizielle Dokumentation überprüft hatte, stellte ich fest, dass diese Abfragemethode in 8.0+ aufgegeben wurde. https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html In MySQL 8.0.3 wurde diese Variable durch transaction_isolation ersetzt. Es gibt viele neue Abfragemethoden. Zwei davon sind unten aufgeführt:
Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Das könnte Sie auch interessieren:
|
<<: Fünf Möglichkeiten zum automatischen Seitensprung in HTML
>>: Über Tomcat kombiniert mit Atomikos zur Implementierung von JTA
Hohe CPU-Last durch MySQL Heute Nachmittag habe i...
Installieren Sie ZLMediaKit auf centos6 Der Autor...
Der vollständige Name von Blog sollte Weblog sein,...
Die Rewrite-Funktion von Nginx unterstützt regelm...
Alibaba Cloud kauft Server Kaufen Sie einen Cloud...
Methode 1: Pycharm herunterladen und installieren...
1. MySQLs eigenes Stresstest-Tool Mysqlslap mysql...
Linux-Systemversion: CentOS7.4 MySQL-Version: 5.7...
Die Vorteile dieser Lösung liegen in der Einfachh...
Vor Kurzem habe ich mit shake.js eine ähnliche Fu...
JSONObject ist lediglich eine Datenstruktur, die ...
Dieser Artikel verwendet die offizielle Element-W...
Vorwort Da für den Upload des Miniprogramms https...
Inhaltsverzeichnis Unterschied zwischen char und ...
Einführung in temporäre Tabellen Was ist eine tem...