Heim > Datenbank > MySQL-Tutorial > Hauptteil

So ändern Sie die Transaktionsisolationsstufe in MySQL

青灯夜游
Freigeben: 2022-02-17 17:54:04
Original
13061 Leute haben es durchsucht

Änderungsmethode: 1. Führen Sie die Anweisung „Set Session Transaction Level Transaction Level“ aus. 2. Öffnen Sie die Datei „mysql.ini“ und fügen Sie die Anweisung „transaction-isolation=transaction level“ hinzu.

So ändern Sie die Transaktionsisolationsstufe in MySQL

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

MySQL-Transaktionsisolationsstufe

Die Isolationsstufe einer Transaktion ist unterteilt in: nicht festgeschriebenes Lesen (nicht festgeschriebenes Lesen), festgeschriebenes Lesen (festgeschriebenes Lesen), wiederholbares Lesen (wiederholbares Lesen), serialisierbar (serialisierbar).

  • Unfestgeschrieben lesen (nicht festgeschriebene Inhalte lesen)

    Auf dieser Isolationsstufe können alle Transaktionen die Ausführungsergebnisse anderer nicht festgeschriebener Transaktionen sehen. Diese Isolationsstufe wird in praktischen Anwendungen selten verwendet, da ihre Leistung nicht viel besser ist als die anderer Stufen. Das Lesen nicht festgeschriebener Daten wird auch als Dirty Read bezeichnet.

  • Read Committed (Commit-Inhalt lesen)

    Dies ist die Standardisolationsstufe der meisten Datenbanksysteme (jedoch nicht die MySQL-Standardeinstellung). Es erfüllt die einfache Definition von Isolation: Eine Transaktion kann nur Änderungen sehen, die von festgeschriebenen Transaktionen vorgenommen wurden. Diese Isolationsstufe unterstützt auch das sogenannte nicht wiederholbare Lesen, da andere Instanzen derselben Transaktion während der Verarbeitung der Instanz möglicherweise neue Commits haben, sodass dieselbe Auswahl möglicherweise unterschiedliche Ergebnisse zurückgibt.

  • Wiederholbares Lesen (wiederholbar)

    Dies ist die Standard-Transaktionsisolationsstufe von MySQL. Sie stellt sicher, dass mehrere Instanzen derselben Transaktion beim gleichzeitigen Lesen von Daten dieselben Datenzeilen sehen. Theoretisch würde dies jedoch zu einem weiteren heiklen Problem führen: Phantom Read. Vereinfacht ausgedrückt bedeutet Phantomlesen, dass, wenn der Benutzer einen bestimmten Bereich von Datenzeilen liest, eine andere Transaktion eine neue Zeile in den Bereich einfügt. Wenn der Benutzer die Datenzeilen im Bereich liest, wird er feststellen, dass es neue „Phantome“ gibt . InnoDB- und Falcon-Speicher-Engines lösen dieses Problem durch den Multiversion Concurrency Control (MVCC)-Mechanismus.

  • Serialisierbar

    Dies ist die höchste Isolationsstufe. Sie löst das Phantomleseproblem, indem sie die Anordnung von Transaktionen erzwingt, sodass sie nicht miteinander in Konflikt geraten können. Kurz gesagt, es fügt jeder gelesenen Datenzeile eine gemeinsame Sperre hinzu. Auf dieser Ebene kann es zu zahlreichen Zeitüberschreitungen und Sperrkonflikten kommen.

MySQL Transaktionsisolationsstufe ändern

Methode 1: Befehlsänderung ausführen

//查看当前事物级别:
SELECT @@tx_isolation;
Nach dem Login kopieren

So ändern Sie die Transaktionsisolationsstufe in MySQL

//设置mysql的隔离级别:
set session transaction isolation level 需要设置的事务隔离级别
Nach dem Login kopieren

Beispiel

//设置read uncommitted级别:
set session transaction isolation level read uncommitted;

//设置read committed级别:
set session transaction isolation level read committed;

//设置repeatable read级别:
set session transaction isolation level repeatable read;

//设置serializable级别:
set session transaction isolation level serializable;
Nach dem Login kopieren

Methode 2: Konfigurationsänderung von mysql.ini

Öffnen Sie MySQL. ini-Konfigurationsdatei, fügen Sie

#可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.
[mysqld]
transaction-isolation = REPEATABLE-READ
Nach dem Login kopieren

hinzu. Der globale Standardwert ist hier REPEATABLE-READ. Tatsächlich ist MySQL ursprünglich standardmäßig auf diese Ebene eingestellt

[Verwandte Empfehlungen: MySQL-Video-Tutorial]

Das obige ist der detaillierte Inhalt vonSo ändern Sie die Transaktionsisolationsstufe in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage