„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann optimistisches Sperren in MySQL implementiert werden?

Wie kann optimistisches Sperren in MySQL implementiert werden?

Veröffentlicht am 07.11.2024
Durchsuche:792

How Can Optimistic Locking be Implemented in MySQL?

Optimistisches Sperren in MySQL: Eine umfassende Erklärung

Optimistisches Sperren ist eine Technik, die in Datenbankverwaltungssystemen verwendet wird, um Datenkonflikte zu verhindern, die auftreten können, wenn Mehrere Benutzer versuchen gleichzeitig, dieselben Daten zu aktualisieren. Obwohl MySQL optimistisches Sperren nicht nativ unterstützt, kann es mithilfe von Standard-SQL-Anweisungen implementiert werden.

Das Konzept verstehen

Optimistisches Sperren basiert auf der Annahme, dass dies bei Daten unwahrscheinlich ist häufig von mehreren Benutzern geändert werden. Anstatt Sperren für die Daten zu erwerben, ermöglicht diese Technik gleichzeitige Aktualisierungen, prüft jedoch auf Konflikte, bevor die Änderungen übernommen werden.

Implementierung in MySQL

Eine Methode zur optimistischen Implementierung Das Sperren in MySQL erfolgt durch Hinzufügen einer Versionsspalte zur Tabelle. Wenn eine Zeile aktualisiert wird, wird die Versionsspalte erhöht. Bevor ein Update festgeschrieben wird, überprüft die Anwendung, ob die aktuelle Versionsnummer mit der Versionsnummer übereinstimmt, die zum Zeitpunkt der Initiierung des Updates in der Zeile gespeichert war. Wenn die Zahlen übereinstimmen, wird das Update festgeschrieben; Andernfalls ist ein Konflikt aufgetreten und die Anwendung muss ihn entsprechend behandeln.

Codebeispiel

Der folgende Codeausschnitt demonstriert optimistisches Sperren mithilfe einer Versionsspalte:

-- Select the row and its version
SELECT val1, val2, version
FROM theTable
WHERE iD = @theId;

-- Calculate new values
-- ...

-- Update the table, checking the version
UPDATE theTable
SET val1 = @newVal1,
    val2 = @newVal2,
    version = version   1
WHERE iD = @theId
    AND version = @oldversion;

-- Check for affected rows
IF @@ROWCOUNT = 1
    -- Commit the changes
    -- ...
ELSE
    -- Handle collision
    -- ...
END IF;

Transaktionen vs. Nicht-Transaktionen

Optimistisches Sperren kann mit oder ohne Transaktionen implementiert werden. Die Verwendung von Transaktionen bietet die Möglichkeit, alle Änderungen rückgängig zu machen, wenn eine Kollision auftritt, kann aber auch zu Einschränkungen der Parallelität führen. Nicht-transaktionales optimistisches Sperren basiert auf der Versionsspalte, um Konflikte zu erkennen, und behandelt sie, ohne dass Transaktionen erforderlich sind.

Fazit

Optimistisches Sperren ist nicht integriert Funktion von MySQL, kann aber mit Standard-SQL-Anweisungen implementiert werden. Durch das Hinzufügen einer Versionsspalte zur Tabelle können Anwendungen optimistische Sperren durchführen und Konflikte erkennen, bevor Aktualisierungen festgeschrieben werden, wodurch die Datenkonsistenz in gleichzeitigen Umgebungen sichergestellt wird.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3