Lorsque plusieurs connexions tentent de mettre à jour le même enregistrement simultanément, des conditions de concurrence peuvent survenir. Un scénario courant implique l'incrémentation d'un champ de compteur, tel que « essais ». Pour garantir l'intégrité des données dans de telles situations, il est crucial de mettre en œuvre des mécanismes qui répondent aux conditions de concurrence.
1. Mises à jour atomiques :
MySQL prend en charge les mises à jour atomiques, qui garantissent qu'une opération de mise à jour réussit ou échoue dans son ensemble. Cette approche est recommandée lorsqu'il suffit de mettre à jour directement le champ sans qu'il soit nécessaire de sélectionner au préalable la valeur actuelle.
2. Verrouillage de ligne :
Cette technique utilise le verrouillage au niveau de la ligne pour empêcher plusieurs mises à jour simultanées sur la même ligne. En acquérant un verrou exclusif, une connexion peut modifier exclusivement la ligne, tandis que les autres connexions doivent attendre que le verrou soit libéré. Cela garantit que le champ est mis à jour correctement et évite les conditions de concurrence.
3. Schéma de version :
Cette approche introduit une colonne de version dans le tableau. Lors de la mise à jour d'une ligne, la version existante est récupérée et la mise à jour est effectuée si la version correspond. Si la version a changé, cela indique qu'une autre connexion a modifié la ligne depuis la récupération initiale. Dans ce cas, la mise à jour est interrompue et le processus doit être répété pour récupérer les dernières valeurs et tenter à nouveau la mise à jour.
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