Beispiel zum Anzeigen und Ändern der MySQL-Transaktionsisolationsebene

Beispiel zum Anzeigen und Ändern der MySQL-Transaktionsisolationsebene

Überprüfen Sie die Transaktionsisolationsebene

In MySQL können Sie die aktuelle Transaktionsisolationsstufe durch Anzeigevariablen wie „%tx_isolation%“ oder die Auswahl der Anweisung „@@tx_isolation;“ anzeigen.

Die SQL-Anweisungen und Laufergebnisse zum Anzeigen der aktuellen Transaktionsisolationsebene lauten wie folgt:

mysql> Variablen wie „%tx_isolation%“ anzeigen;
+---------------+-----------------+
| Variablenname | Wert |
+---------------+-----------------+
| tx_isolation | WIEDERHOLBARES LESEN |
+---------------+-----------------+
1 Zeile im Satz, 1 Warnung (0,17 Sek.)
mysql> wähle @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| WIEDERHOLBARES LESEN |
+-----------------+
1 Zeile im Satz, 1 Warnung (0,00 Sek.)

Die Ergebnisse zeigen, dass die aktuelle Transaktionsisolationsebene von MySQL REPEATABLE-READ ist.

Darüber hinaus können Sie die folgenden Anweisungen verwenden, um die globalen und Sitzungstransaktionsisolierungsebenen abzufragen:

WÄHLEN SIE @@global.tx_isolation;
Wählen Sie @@session.tx_isolation;

Tipp: In MySQL 8.0.3 wurde die Variable tx_isolation durch die Variable transaction_isolation ersetzt. Um die Transaktionsisolationsebene in MySQL 8.0.3 abzufragen, ersetzen Sie einfach die Variable tx_isolation in der obigen Abfrage durch die Variable transaction_isolation.

Ändern der Transaktionsisolationsebene

MySQL bietet die Anweisung SET TRANSACTION, mit der die Transaktionsisolationsebene für eine einzelne Sitzung oder global geändert werden kann. Das Syntaxformat ist wie folgt:

SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {LESEN UNCOMMITTED | LESEN COMMITTED | WIEDERHOLBARES LESEN | SERIALIZABLE}

Die Schlüsselwörter SESSION und GLOBAL werden verwendet, um den Umfang der geänderten Transaktionsisolationsebene anzugeben:

  • SESSION: Gibt an, dass die geänderte Transaktionsisolationsebene auf alle Transaktionen in der aktuellen Sitzung (aktuelles Befehlsfenster) angewendet wird.
  • GLOBAL: Gibt an, dass die geänderte Transaktionsisolationsstufe auf alle Transaktionen in allen Sitzungen (global) angewendet wird und die vorhandenen Sitzungen davon nicht betroffen sind.
  • Wenn SESSION und GLOBAL weggelassen werden, wird die geänderte Transaktionsisolationsebene auf die nächste Transaktion angewendet, die in der aktuellen Sitzung noch nicht gestartet wurde.

Jeder Benutzer kann die Transaktionsisolationsebene für eine Sitzung ändern, aber nur Benutzer mit dem SUPER-Privileg können die globale Transaktionsisolationsebene ändern.

Wenn Sie einen normalen Benutzer verwenden, um die globale Transaktionsisolationsebene zu ändern, wird Ihnen eine Fehlermeldung angezeigt, dass für die Ausführung dieses Vorgangs Superprivilegien erforderlich sind. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt:

C:\Benutzer\leovo>mysql -utestuser -p
Passwort eingeben: ******
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 41
Serverversion: 5.7.29-log MySQL Community Server (GPL)
 
Copyright (c) 2000, 2020, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.
 
Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.
 
Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.
 
mysql> GLOBALE TRANSAKTIONSISOLIERSTUFE FESTLEGEN, LESEN UNCOMMITTED;
FEHLER 1227 (42000): Zugriff verweigert; Sie benötigen (mindestens eines) der SUPER-Privilegien für diesen Vorgang
mysql> Sitzungstransaktionsisolierungsebene festlegen, nicht festgeschrieben lesen;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Beispiel 1

Mit der Anweisung SET TRANSACTION können Sie die Isolationsebenen für Sitzungen und globale Transaktionen ändern. Die SQL-Anweisungen und die Ergebnisse der Ausführung lauten wie folgt:

mysql> wähle @@session.tx_isolation;
+------------------------+
| @@session.tx_isolation |
+------------------------+
| SERIALISIERBAR |
+------------------------+
1 Zeile im Satz, 1 Warnung (0,00 Sek.)

mysql> GLOBALE TRANSAKTIONSISOLIERSTUFE AUF WIEDERHOLBARES LESEN FESTLEGEN;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> wähle @@global.tx_isolation;
+--------------------------+
| @@global.tx_isolation |
+--------------------------+
| WIEDERHOLBARES LESEN |
+--------------------------+
1 Zeile im Satz, 1 Warnung (0,00 Sek.)

Sie können auch den Befehl set tx_isolation verwenden, um die Transaktionsisolationsstufe der aktuellen Sitzung direkt zu ändern. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt:

mysql> setze tx_isolation='READ-COMMITTED';
Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,00 Sek.)

mysql> wähle @@session.tx_isolation;
+------------------------+
| @@session.tx_isolation |
+------------------------+
| GELESEN-ENGAGIERT |
+------------------------+
1 Zeile im Satz, 1 Warnung (0,00 Sek.)

Wissenspunkte-Ergänzung

Flussdiagramm zum Lesen und Commit der MySQL-Transaktionsisolationsebene

Oben finden Sie den detaillierten Inhalt des Beispiels zum Anzeigen und Ändern der Transaktionsisolationsstufe von MySQL. Weitere Informationen zum Anzeigen und Ändern der Transaktionsisolationsstufe von MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Lese-Commits der MySQL-Transaktionsisolationsebene
  • Detaillierte Erläuterung der vier Transaktionsisolationsebenen in MySQL
  • Detaillierte Erklärung und Vergleich der vier Transaktionsisolationsebenen in MySQL
  • Detaillierte Analyse der MySQL-Transaktionsisolierung und ihrer Auswirkungen auf die Leistung
  • Tutorial zur Beziehung zwischen Innodb-Transaktionsisolationsebene und Sperre in MySQL
  • Einführung in die Transaktionsisolationsebene von MySQL-Datenbanken (Transaction Isolation Level)
  • Ausführliche Erklärung des Sperrmechanismus in MySQL InnoDB
  • Analyse des MySQL-Sperrmechanismus und der Verwendung
  • Tiefgreifendes Verständnis der Probleme mit der Transaktionsisolationsebene und dem Sperrmechanismus von MySQL

<<:  Implementierung der Bereitstellung eines privaten Docker-Warehouse-Registrars

>>:  Die Reihenfolge der Ereignisausführung in der Knotenereignisschleife

Artikel empfehlen

So erstellen Sie einen DHCP-Server in Linux

Inhaltsverzeichnis 1. Grundkenntnisse: 2. DHCP-Se...

Detaillierte Erläuterung der Verwendung von Docker Commit

Manchmal müssen Sie bestimmte Abhängigkeiten im B...

N Möglichkeiten, adaptive Teiler geschickt mit CSS zu implementieren

Trennlinien sind eine gängige Gestaltungsart auf ...

Analyse der Lösung für das Problem der gemeinsamen Nutzung von Nginx-Sitzungen

Dieser Artikel stellt hauptsächlich die Lösung fü...

Detaillierte Erklärung der MySQL-Instanz mit aktiviertem SSD-Speicher

Detaillierte Erklärung der MySQL-Instanz mit akti...

Lösung für das MySQL IFNULL-Beurteilungsproblem

Problem: Die von mybatis zurückgegebenen Daten vo...

Mehrere Möglichkeiten zum Ändern der SELECT-Optionen in einer HTML-Dropdown-Box

Nachdem das Formular übermittelt wurde, wird die z...

Einige Parameterbeschreibungen von Texteingabefeldern im Webdesign

In Gästebüchern, Foren und anderen Orten werden i...

Detaillierte Erklärung der Destrukturierungszuweisungssyntax in Javascript

Vorwort Die erstmals in ES6 eingeführte „Destruct...

So wählen Sie die Transaktionsisolationsebene in einem MySQL-Projekt

Einführung Beginnen wir mit unserem Inhalt. Ich g...

Detailliertes Beispiel einer MySQL-Unterabfrage

Unterabfrageklassifizierung Klassifizierung nach ...