Heim  >  Artikel  >  Datenbank  >  So ändern Sie die Isolationsstufe von MySQL

So ändern Sie die Isolationsstufe von MySQL

藏色散人
藏色散人Original
2021-12-29 14:09:215418Durchsuche

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.

So ändern Sie die Isolationsstufe von MySQL

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!

Stellungnahme:
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