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