So ändern Sie die MySQL-Isolationsstufe: 1. Suchen Sie nach „skip-external-locking“. 2. Fügen Sie den Inhalt von „transaction-isolation = READ-COMMITTED“ hinzu. 3. Starten Sie den MySQL-Dienst neu.
Die Betriebsumgebung dieses Artikels: Windows 7-System, MySQL-Version 5.5, Dell G3-Computer.
Wie ändere ich die Isolationsstufe von MySQL?
MySQL-Transaktionsisolationsstufe und Änderungsmethode
Ändern Sie die MySQL-Transaktionsisolationsstufe:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Hinzufügen (Übermittlungsinhalt lesen) nach der Position:
lc-messages-dir = /usr/share/mysql skip-external-locking
:
transaction-isolation = READ-COMMITTED
Speichern und starten Sie den MySQL-Dienst neu:
sudo service mysql restart
SQLs 4 Isolationsstufen
Read Uncommitted (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 Dirty Read genannt.
Read Committed
Dies ist die Standardisolationsstufe für die 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 (Mysql verwendet standardmäßig REPEATABLE-READ)
Dies ist die Standard-Transaktionsisolationsstufe. Sie stellt sicher, dass mehrere Instanzen derselben Transaktion dieselbe Nachricht sehen, wenn sie Datenzeilen gleichzeitig lesen. Theoretisch führt dies jedoch zu einem weiteren heiklen Problem: Phantom Read (Phantom Read). Einfach 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 erneut liest, wird er feststellen, dass es neue „Phantome“ gibt. OK. InnoDB- und Falcon-Speicher-Engines lösen dieses Problem durch den Multiversion-Parallelitätskontrollmechanismus (MVCC, Multiversion Concurrency Control).
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.
Wenn dieselben Daten gelesen werden, treten wahrscheinlich folgende Probleme auf:
Dirty Read (Drity Read): Eine Transaktion hat eine Kopie der Daten aktualisiert, und eine andere Transaktion hat dieselben Daten gelesen zu diesem Zeitpunkt. Wenn der vorherige RollBack-Vorgang ausgeführt wird, sind die von der nachfolgenden Transaktion gelesenen Daten aus irgendeinem Grund falsch.
Nicht wiederholbares Lesen: Die Daten sind zwischen zwei Abfragen einer Transaktion inkonsistent. Dies kann daran liegen, dass die durch eine Transaktion aktualisierten Originaldaten zwischen den beiden Abfragen eingefügt wurden.
Phantom Read: Die Anzahl der Datenelemente in zwei Abfragen einer Transaktion ist inkonsistent. Beispielsweise fragt eine Transaktion mehrere Datenzeilen ab, während eine andere Transaktion zu diesem Zeitpunkt mehrere neue Datenspalten in die folgende Abfrage einfügt Bei der vorherigen Transaktion werden Sie feststellen, dass es mehrere Datenspalten gibt, die zuvor nicht vorhanden waren.
# !
Nach Django2 Tutorial
》Das obige ist der detaillierte Inhalt vonSo ändern Sie die Isolationsstufe von MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!