Maison  >  Article  >  base de données  >  Comment pouvez-vous implémenter le verrouillage optimiste dans MySQL ?

Comment pouvez-vous implémenter le verrouillage optimiste dans MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 17:41:30990parcourir

How Can You Implement Optimistic Locking in MySQL?

Verrouillage optimiste dans MySQL

Le verrouillage optimiste est une pratique utilisée dans le contrôle de concurrence pour empêcher plusieurs utilisateurs de mettre à jour les mêmes données simultanément. Contrairement au verrouillage pessimiste, qui suppose que des conflits se produiront et verrouille les données au début d'une transaction, le verrouillage optimiste suppose que les conflits sont rares et permet les mises à jour sans verrouillage.

Implémentation dans MySQL

MySQL fait n'implémente pas nativement le verrouillage optimiste. Cependant, il peut être implémenté à l'aide d'instructions SQL standard et de l'approche de la colonne de version :

<code class="sql">CREATE TABLE theTable (
    id INT NOT NULL AUTO_INCREMENT,
    val1 INT NOT NULL,
    val2 INT NOT NULL,
    version INT NOT NULL DEFAULT 0
);</code>

Requête de verrouillage optimiste :

<code class="sql">UPDATE theTable
SET val1 = @newVal1,
    val2 = @newVal2,
    version = version + 1
WHERE id = @id
AND version = @oldVersion;</code>

Vérification des conflits :

Après la mise à jour, la valeur AffectedRows est vérifiée :

  • Si AffectedRows == 1, la mise à jour a réussi sans conflits.
  • Si AffectedRows == 0, un conflit s'est produit et la mise à jour a échoué.

Niveaux d'isolement

Les niveaux d'isolement des transactions jouent un rôle dans le verrouillage optimiste. Au niveau d'isolement READ_COMMITTED, les autres processus ne peuvent pas lire les mises à jour non validées, ce qui empêche les conflits de se produire.

Limitations

  • Évolutivité : Le verrouillage optimiste peut devenir moins efficace en haute -environnements de concurrence où les conflits sont plus probables.
  • Perte de données : Si un conflit se produit, les modifications de données apportées par d'autres utilisateurs peuvent être perdues.

Quand Utiliser

Le verrouillage optimiste convient aux situations avec des mises à jour peu fréquentes et une faible probabilité de conflits. Il est souvent utilisé dans les applications Web où de courtes sessions utilisateur réduisent la probabilité de mises à jour simultanées.

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