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

Beheben von Problemen mit hoher MySQL-CPU-Auslastung

Hohe CPU-Last durch MySQL Heute Nachmittag habe i...

CentOS 6 Kompilieren und installieren Sie ZLMediaKit-Analyse

Installieren Sie ZLMediaKit auf centos6 Der Autor...

Schreiben Sie einen formellen Blog mit XHTML CSS

Der vollständige Name von Blog sollte Weblog sein,...

Beispiel für die reguläre Umschreibmethode für Nginx Rewrite (Matching)

Die Rewrite-Funktion von Nginx unterstützt regelm...

Implementierung des Pycharm-Installationstutorials auf Ubuntu 18.04

Methode 1: Pycharm herunterladen und installieren...

Verwendung des MySQL-Stresstesttools Mysqlslap

1. MySQLs eigenes Stresstest-Tool Mysqlslap mysql...

So installieren Sie den MySQL 5.7.28-Binärmodus unter CentOS 7.4

Linux-Systemversion: CentOS7.4 MySQL-Version: 5.7...

MySQL-Datenmigration mit dem Befehl MySQLdump

Die Vorteile dieser Lösung liegen in der Einfachh...

Vue implementiert die Shake-Funktion (kompatibel mit ios13.3 und höher)

Vor Kurzem habe ich mit shake.js eine ähnliche Fu...

Detaillierte Erklärung der JSONObject-Verwendung

JSONObject ist lediglich eine Datenstruktur, die ...

Übung zum Hochladen von Element-Avataren

Dieser Artikel verwendet die offizielle Element-W...

MySQL-FAQ-Serie: Wann werden temporäre Tabellen verwendet?

Einführung in temporäre Tabellen Was ist eine tem...