Heim >Datenbank >MySQL-Tutorial >Wie kann optimistisches Sperren in MySQL implementiert werden?
Obwohl MySQL optimistisches Sperren nicht nativ unterstützt, kann es durch Standard-SQL-Konstrukte und Codelogik implementiert werden .
Kein Sperransatz:
Bei diesem Ansatz wird kein expliziter Sperrvorgang verwendet. Die Datenkonsistenz ist jedoch nicht gewährleistet, wenn mehrere Benutzer dieselben Daten gleichzeitig aktualisieren.
SELECT data from theTable WHERE iD = @theId; {code that calculates new values} UPDATE theTable SET val1 = @newVal1, val2 = @newVal2 WHERE iD = @theId;
Optimistischer Sperransatz:
Dieser Ansatz umfasst die Prüfung auf Änderungen vor der Festschreibung aktualisieren. Wenn eine Änderung aufgetreten ist, die normalerweise durch Zeilenversionierung oder Gleichheitsprüfungen festgestellt wird, wird die Aktualisierung abgelehnt.
SELECT iD, val1, val2 FROM theTable WHERE iD = @theId; {code that calculates new values} UPDATE theTable SET val1 = @newVal1, val2 = @newVal2 WHERE iD = @theId AND val1 = @oldVal1 AND val2 = @oldVal2; {if AffectedRows == 1 } {go on with your other code} {else} {decide what to do since it has gone bad... in your code} {endif}
Optimistische Sperre für Versionierung:
Ähnlich der optimistischen Sperre Bei diesem Ansatz wird eine Versionsspalte verwendet, um nach Änderungen zu suchen.
SELECT iD, val1, val2, version FROM theTable WHERE iD = @theId; {code that calculates new values} UPDATE theTable SET val1 = @newVal1, val2 = @newVal2, version = version + 1 WHERE iD = @theId AND version = @oldversion; {if AffectedRows == 1 } {go on with your other code} {else} {decide what to do since it has gone bad... in your code} {endif}
Transaktionen und Isolationsstufen:
Transaktionen können in Verbindung mit optimistischer Sperrung verwendet werden, um sicherzustellen Datenkonsistenz. Die Wahl der Transaktionsisolationsstufe kann sich jedoch auf die Wirksamkeit der optimistischen Sperrung auswirken.
Testen und Verifizieren:
Um sicherzustellen, dass die optimistische Sperrung korrekt implementiert wird, wird empfohlen, dies zu tun Führen Sie gründliche Tests und Verifizierungen mit verschiedenen Szenarien und Isolationsstufen durch.
Das obige ist der detaillierte Inhalt vonWie kann optimistisches Sperren in MySQL implementiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!