Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie können Sie optimistisches Sperren in MySQL ohne native Unterstützung implementieren?

Mary-Kate Olsen
Freigeben: 2024-10-29 21:53:02
Original
678 Leute haben es durchsucht

How Can You Implement Optimistic Locking in MySQL Without Native Support?

Optimistisches Sperren in MySQL: Ein genauerer Blick

Optimistisches Sperren, eine Technik zur Verwaltung gleichzeitiger Aktualisierungen in einer Datenbank, wird nicht nativ unterstützt von MySQL. Es kann jedoch durch eine Kombination aus Datenbankpraktiken und Anwendungscode implementiert werden.

So funktioniert optimistisches Sperren

Das Prinzip hinter optimistischem Sperren besteht darin, davon auszugehen, dass dies bei Daten nicht der Fall ist Konflikt bei gleichzeitigen Updates. Durch die Überprüfung der Datenintegrität vor der Aktualisierung können Konflikte erkannt und entsprechende Maßnahmen ergriffen werden.

Wenn keine Transaktionen vorliegen, wird eine optimistische Sperre angewendet, indem vor dem UPDATE eine zusätzliche SELECT-Anweisung eingefügt wird. Diese SELECT-Anweisung ruft den aktuellen Status der Daten ab, der dann mit dem Status vor dem Aktualisierungsversuch verglichen wird. Wenn sich die Daten geändert haben, wird die Aktualisierung abgebrochen, wodurch die Datenintegrität gewahrt bleibt.

Optimistisches Sperren in MySQL verwenden

Um optimistisches Sperren in MySQL zu implementieren, können die folgenden Schritte ausgeführt werden im Anwendungscode ausgeführt:

  1. Führen Sie eine SELECT-Anweisung aus, um den aktuellen Status der Daten abzurufen.
  2. Führen Sie Berechnungen oder andere Operationen an den Daten durch.
  3. Führen Sie ein UPDATE aus -Anweisung, um die Daten mit optimistischen Sperrkriterien zu aktualisieren (z. B. WHERE COLUMN_NAME = @OLD_VALUE).
  4. Überprüfen Sie die Anzahl der betroffenen Zeilen nach der UPDATE-Anweisung. Wenn es 0 ist, haben sich die Daten geändert, was auf einen Konflikt hinweist, und die Aktualisierung kann abgebrochen werden.

Beispiel

Betrachten Sie das folgende Beispiel:

<code class="sql">SELECT val1, val2 FROM theTable WHERE iD = @theId;

-- Perform data calculations

UPDATE theTable
SET val1 = @newVal1,
    val2 = @newVal2
WHERE iD = @theId
AND val1 = @oldVal1
AND val2 = @oldVal2;

-- Check the number of affected rows
IF @@ROWCOUNT = 1
-- Update successful
ELSE
-- Conflict detected
END</code>
Nach dem Login kopieren

Alternative optimistische Sperrmethoden

Neben dem SELECT-UPDATE-CHECK-Ansatz kann optimistisches Sperren auch mithilfe einer Versionsspalte implementiert werden. Diese Spalte wird jedes Mal erhöht, wenn die Daten aktualisiert werden, und die UPDATE-Anweisung prüft die Version, bevor die Zeile aktualisiert wird. Wenn die Version nicht übereinstimmt, wird das Update abgebrochen.

Überlegungen

Optimistisches Sperren geht davon aus, dass Konflikte selten sind und dass die Kosten für die Konflikterkennung geringer sind als bei pessimistischer Sperrung Sperren (z. B. über Transaktionen). Es ist jedoch möglicherweise nicht für Szenarien geeignet, in denen die Parallelität hoch ist und die Datenintegrität von entscheidender Bedeutung ist.

Das obige ist der detaillierte Inhalt vonWie können Sie optimistisches Sperren in MySQL ohne native Unterstützung implementieren?. 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