Lösen Sie das Problem des MySql8.0-Prüfungsfehlers der Transaktionsisolationsebene

Lösen Sie das Problem des MySql8.0-Prüfungsfehlers der Transaktionsisolationsebene

MySql8.0 Fehler bei der Transaktionsisolationsebene anzeigen

Frage

Transaktionsisolationsebene der Datenbankansicht

wählen Sie @@global.tx_isolation,@@tx_isolation;

Fehler:

mysql> wähle @@global.tx_isolation,@@tx_isolation;
FEHLER 1193 (HY000): Unbekannte Systemvariable „tx_isolation“
mysql> wähle @@global.tx_isolation,@@tx_isolation;
FEHLER 1193 (HY000): Unbekannte Systemvariable „tx_isolation“

Ich verwende MySQL Version 8.0. tx_isolation wurde in Version 8.0 in global.transaction_isolation geändert

Der Befehl ändert sich zu

wä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 Transaktionen

1. 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 in

Nicht 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.

Bildbeschreibung hier einfügen

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 Datenbanken

Fragen 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

Bildbeschreibung hier einfügen

In MySQL 8.0.3 wurde diese Variable durch transaction_isolation ersetzt.

Es gibt viele neue Abfragemethoden. Zwei davon sind unten aufgeführt:

1.Wählen Sie @@transaction_isolation;

Bildbeschreibung hier einfügen

2. Variablen wie „transaction_isolation“ anzeigen;

Bildbeschreibung hier einfügen

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:
  • Detaillierte Erläuterung des MySQL MVCC-Mechanismusprinzips
  • Detaillierte Erläuterung der MySQL-Transaktionsisolationsebene und des MVCC
  • Wie wird die Transaktionsisolation von MySQL erreicht?
  • Tiefgreifendes Verständnis der Probleme mit der Transaktionsisolationsebene und dem Sperrmechanismus von MySQL
  • Analyse des zugrunde liegenden Prinzips der MySQL-Mehrversions-Parallelitätskontrolle MVCC
  • Implementierung von MySQL Multi-version Concurrency Control MVCC
  • Details zur Mysql MVCC-Mehrversions-Parallelitätssteuerung
  • MySQL-Transaktionsisolationsebene und MVCC

<<:  Fünf Möglichkeiten zum automatischen Seitensprung in HTML

>>:  Über Tomcat kombiniert mit Atomikos zur Implementierung von JTA

Artikel empfehlen

So implementieren Sie eine bidirektionale Bindungsfunktion in vue.js mit reinem JS

Inhaltsverzeichnis Lassen Sie uns zunächst über d...

Detaillierte Erläuterung der Hochverfügbarkeitskonfiguration von Docker

Docker Compose Docker Compose unterteilt die verw...

Verstehen Sie JavaScript-Prototypen und Prototypenketten gründlich

Inhaltsverzeichnis Vorwort Den Grundstein legen P...

Ausführliche Erklärung dieses Schlüsselworts in JavaScript

Inhaltsverzeichnis 1. Einleitung 2. Verstehen Sie...

MySQL-Datenbank Shell import_table Datenimport

Inhaltsverzeichnis MySQL Shell import_table Daten...

Detaillierte Erklärung der dynamischen Komponenten von vue.js

:ist eine dynamische Komponente Verwenden Sie v-b...

Sechs Methoden zur Nginx-Optimierung

1. Optimieren Sie die Nginx-Parallelität [root@pr...

So legen Sie eine feste IP-Adresse in einer virtuellen CentOS7-Maschine fest

Da meine Entwicklungsumgebung darin besteht, Cent...

JS-Dekorationsmuster und TypeScript-Dekoratoren

Inhaltsverzeichnis Einführung in das Decorator-Mu...

So implementieren Sie eine MySQL-Master-Slave-Replikation basierend auf Docker

Vorwort Die MySQL Master-Slave-Replikation ist di...

202 kostenlose, hochwertige XHTML-Vorlagen (1)

Hier präsentiert 123WORDPRESS.COM den ersten Teil...

Detaillierte Erklärung des Vue-Slots

1. Funktion : Ermöglicht der übergeordneten Kompo...

Vue+openlayer5-Methode zum Abrufen der Koordinaten des aktuellen Mauszeigers

Vorwort: Wie erhält man die Koordinaten der aktue...