Heim  >  Artikel  >  Datenbank  >  Wie kann optimistisches Sperren in MySQL implementiert werden?

Wie kann optimistisches Sperren in MySQL implementiert werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 20:39:30404Durchsuche

 How Can Optimistic Locking Be Implemented in MySQL?

Optimistisches Sperren in MySQL

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!

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