Heim >Datenbank >MySQL-Tutorial >Wie kann ich nicht sperrende SELECT-Abfragen in MySQL durchführen?

Wie kann ich nicht sperrende SELECT-Abfragen in MySQL durchführen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-15 16:56:15203Durchsuche

How Can I Perform Non-Locking SELECT Queries in MySQL?

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:

  1. Starten Sie die Transaktion mit READ UNCOMMITTED Isolation:

    SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
  2. Führen Sie die SELECT-Abfrage aus:

    SELECT * FROM TABLE_NAME;
  3. 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:

  1. Setzen Sie die Transaktionsisolationsstufe auf READ UNCOMMITTED:

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
  2. Führen Sie die SELECT-Anweisung aus Abfrage:

    SELECT * FROM TABLE_NAME ;
  3. Ü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!

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