Nicht sperrende SELECT-Abfragen in MySQL
In MySQL kann es zu häufigen Sperren während SELECT-Vorgängen kommen, wenn Tabellen gleichzeitig geändert werden. Um dieses Problem zu mildern, sollten Sie die Verwendung von Techniken in Betracht ziehen, die nicht sperrende Lesevorgänge ermöglichen.
Verwendung von READ UNCOMMITTED
Ein Ansatz besteht darin, die Transaktionsisolationsstufe auf READ UNCOMMITTED festzulegen. Dies ermöglicht Lesevorgänge ohne den Erwerb von Sperren. Allerdings ist diese Option möglicherweise nicht für Slaves geeignet, da sie die Datenintegrität beeinträchtigt.
Das SQL-Äquivalent von WITH (NOLOCK)
Für die Äquivalenz mit WITH (NOLOCK) -Klausel in Microsoft SQL Server bietet MySQL einen mehrstufigen Prozess:
Starten Sie die Transaktion mit READ UNCOMMITTED Isolation:
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
Führen Sie die SELECT-Abfrage aus:
SELECT * FROM TABLE_NAME;
Setzen Sie die Transaktionsisolationsstufe wieder auf WIEDERHOLBARES LESEN zurück:
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Verbesserte nicht sperrende Abfrage Ausführung
Michael Mior schlug eine verbesserte Version der nicht sperrenden Abfrageausführung vor:
Setzen Sie die Transaktionsisolationsstufe auf READ UNCOMMITTED:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
Führen Sie die SELECT-Anweisung aus Abfrage:
SELECT * FROM TABLE_NAME ;
Übernehmen Sie die Transaktion:
COMMIT ;
Das obige ist der detaillierte Inhalt vonWie kann ich nicht sperrende SELECT-Abfragen in MySQL durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!