Ä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. .
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.
Repeatable Read (wiederholbar)
Dies ist die Standard-Transaktionsisolationsstufe von MySQL. Sie stellt sicher, dass mehrere Instanzen derselben Transaktion beim gleichzeitigen Lesen von Daten dieselben Datenzeilen sehen. Aber theoretisch würde dies 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: Befehl zum Ändern ausführen
//查看当前事物级别: SELECT @@tx_isolation;
//设置mysql的隔离级别: set session transaction isolation level 需要设置的事务隔离级别
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;
Methode 2: my sql.ini-Konfigurationsänderung
Öffnen Sie mysql.ini Fügen Sie in der Konfigurationsdatei
#可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE. [mysqld] transaction-isolation = REPEATABLE-READ
hinzu. Der globale Standardwert ist hier REPEATABLE-READ. Tatsächlich verwendet MySQL auch standardmäßig diese Ebene
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!