Maison >base de données >tutoriel mysql >Comment pouvez-vous implémenter le 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.
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 :
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.
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!