Heim > Datenbank > MySQL-Tutorial > Wie kann ich SELECT-Anweisungen in MySQL ausführen, ohne Sperren zu verursachen?

Wie kann ich SELECT-Anweisungen in MySQL ausführen, ohne Sperren zu verursachen?

Barbara Streisand
Freigeben: 2024-12-30 09:04:17
Original
585 Leute haben es durchsucht

How Can I Execute SELECT Statements in MySQL Without Causing Locks?

Vermeiden von Sperren mit MySQL-Abfragen

In MySQL können bestimmte Abfragen Sperren verursachen, was zu Leistungsproblemen führt, insbesondere wenn die Tabelle häufig abgefragt wird geändert. Um dies zu beheben, stellt sich die Frage: Gibt es eine Möglichkeit, eine Select-Anweisung auszuführen, ohne Sperren zu induzieren?

Die ursprüngliche Abfrage in Frage:

SELECT COUNT(online.account_id) cnt from online;
Nach dem Login kopieren

sperrt die Tabelle aufgrund des parallelen Ereignisses auch die Tabelle ändern. Die Frage untersucht mögliche Alternativen.

Eine mögliche Lösung, die in den Antworten erwähnt wird, besteht darin, die Transaktionsisolationsstufe auf READ-UNCOMMITTED zu setzen. Dieser Ansatz ist jedoch nicht ideal für Slave-Datenbanken, da er mit der binären Protokollierung im STATEMENT-Modus nicht kompatibel ist.

Ein alternativer Ansatz, der mit Slave-Datenbanken kompatibel ist, ist die Verwendung der folgenden Syntax:

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;
Nach dem Login kopieren

Diese Methode deaktiviert effektiv Sperren für die Dauer der select-Anweisung. Es ist jedoch wichtig zu beachten, dass dies zu nicht deterministischen Ergebnissen führen kann.

Ein weiterer Vorschlag ist die Verwendung der folgenden Syntax:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
COMMIT ;
Nach dem Login kopieren

Diese Option deaktiviert auch Sperren für die Dauer des select-Anweisung und stellt sicher, dass während des Isolationszeitraums vorgenommene Änderungen sofort übernommen werden. Es ist zu beachten, dass dieser Ansatz im Vergleich zur vorherigen Methode Auswirkungen auf die Leistung haben kann. Darüber hinaus ist es nicht erforderlich, die Isolationsstufe explizit auf REPEATABLE READ zurückzusetzen, da sie beim Festschreiben automatisch zurückgesetzt wird.

Durch die Verwendung dieser Ansätze ist es möglicherweise möglich, Sperren bei der Ausführung ausgewählter Abfragen in MySQL zu vermeiden Verbesserung der Leistung und Reduzierung von Konflikten. Bei der Wahl der geeigneten Methode ist es jedoch wichtig, die möglichen Kompromisse und Auswirkungen auf die Datengenauigkeit und -konsistenz zu berücksichtigen.

Das obige ist der detaillierte Inhalt vonWie kann ich SELECT-Anweisungen in MySQL ausführen, ohne Sperren zu verursachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage