"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment le verrouillage optimiste peut-il être implémenté dans MySQL ?

Comment le verrouillage optimiste peut-il être implémenté dans MySQL ?

Publié le 2024-11-07
Parcourir:189

How Can Optimistic Locking be Implemented in MySQL?

Verrouillage optimiste dans MySQL : une explication complète

Le verrouillage optimiste est une technique utilisée dans les systèmes de gestion de bases de données pour éviter les conflits de données qui peuvent survenir lorsque plusieurs utilisateurs tentent de mettre à jour les mêmes données simultanément. Bien que MySQL ne prenne pas en charge nativement le verrouillage optimiste, il peut être implémenté à l'aide d'instructions SQL standard.

Comprendre le concept

Le verrouillage optimiste fonctionne sur l'hypothèse qu'il est peu probable que les données soient transmises. être modifié fréquemment par plusieurs utilisateurs. Au lieu d'acquérir des verrous sur les données, cette technique permet des mises à jour simultanées, mais vérifie les conflits avant de valider les modifications.

Implémentation dans MySQL

Une méthode d'implémentation optimiste le verrouillage dans MySQL consiste à ajouter une colonne de version à la table. Lorsqu'une ligne est mise à jour, la colonne de version est incrémentée. Avant de valider une mise à jour, l'application vérifie que le numéro de version actuel correspond au numéro de version stocké dans la ligne au moment du lancement de la mise à jour. Si les chiffres correspondent, la mise à jour est validée ; sinon, un conflit s'est produit et l'application doit le gérer de manière appropriée.

Exemple de code

L'extrait de code suivant illustre le verrouillage optimiste à l'aide d'une colonne de version :

-- 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;

Transactions vs non-transactions

Le verrouillage optimiste peut être implémenté avec ou sans transactions. L'utilisation de transactions offre la possibilité d'annuler toutes les modifications en cas de collision, mais elle peut également introduire des limitations de concurrence. Le verrouillage optimiste non transactionnel s'appuie sur la colonne de version pour détecter les conflits et les gère sans avoir besoin de transactions.

Conclusion

Le verrouillage optimiste n'est pas intégré fonctionnalité de MySQL, mais elle peut être implémentée à l'aide d'instructions SQL standard. En ajoutant une colonne de version au tableau, les applications peuvent effectuer un verrouillage optimiste et détecter les conflits avant de valider les mises à jour, garantissant ainsi la cohérence des données dans des environnements concurrents.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3