Maison  >  Article  >  base de données  >  Comment le verrouillage optimiste peut-il être implémenté dans MySQL ?

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 20:39:30404parcourir

 How Can Optimistic Locking Be Implemented in MySQL?

Verrouillage optimiste dans MySQL

Bien que MySQL ne prenne pas en charge le verrouillage optimiste de manière native, il peut être implémenté via des constructions SQL standard et une logique de code .

Aucune approche de verrouillage :

Dans cette approche, aucun verrouillage explicite n'est utilisé. Cependant, la cohérence des données n'est pas garantie si plusieurs utilisateurs mettent à jour les mêmes données simultanément.

SELECT data from theTable WHERE iD = @theId;
{code that calculates new values}
UPDATE theTable
SET val1 = @newVal1,
    val2 = @newVal2
WHERE iD = @theId;

Approche de verrouillage optimiste :

Cette approche inclut la vérification des modifications avant de valider le mise à jour. Si une modification s'est produite, généralement déterminée par le contrôle de version des lignes ou par des contrôles d'égalité, la mise à jour est rejetée.

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}

Verrouillage optimiste de version :

Similaire au verrouillage optimiste approche, cette technique utilise une colonne de version pour vérifier les modifications.

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}

Transactions et niveaux d'isolement :

Les transactions peuvent être utilisées conjointement avec un verrouillage optimiste pour garantir cohérence des données. Cependant, le choix du niveau d'isolement des transactions peut affecter l'efficacité du verrouillage optimiste.

Test et vérification :

Pour garantir que le verrouillage optimiste est correctement mis en œuvre, il est recommandé de effectuez des tests et des vérifications approfondis en utilisant différents scénarios et niveaux d'isolement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn