Maison  >  Article  >  base de données  >  A quoi sert la mise à jour dans MySQL

A quoi sert la mise à jour dans MySQL

WBOY
WBOYoriginal
2022-05-12 15:51:275465parcourir

L'utilisation de for update dans MySQL est "select * from table which...for update" ; l'utilisation de for update peut ajouter un verrou exclusif à la ligne pendant la requête. Lorsqu'une opération de transaction n'est pas terminée, d'autres transactions peuvent lire Récupéré. mais ne peut pas être écrit ou mis à jour.

A quoi sert la mise à jour dans MySQL

L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.22, ordinateur Dell G3.

À quoi sert for update dans MySQL ? 1. Scénarios d'utilisation de for update

Si vous rencontrez un scénario avec une concurrence élevée et des exigences élevées en matière de précision des données, vous devez comprendre et utiliser for update. La fonction de

for update est d'ajouter un verrou exclusif à la ligne lors d'une requête lorsqu'une opération de transaction n'est pas terminée, les autres transactions peuvent lire mais ne peuvent pas écrire ou mettre à jour.

Par exemple, lorsqu'il s'agit d'argent, d'inventaire, etc. Généralement, ces opérations sont une longue série et démarrent une transaction. Si l'inventaire est à 1 lors de sa première lecture et qu'un autre processus met immédiatement à jour l'inventaire à 0 et que la transaction n'est pas encore terminée, les mauvaises données continueront à être exécutées et il y aura des problèmes. Par conséquent, la mise à jour est nécessaire pour verrouiller les données afin d'éviter les erreurs de données en cas de concurrence élevée.

N'oubliez pas un principe : un verrou, deux jugements, trois mises à jour

2. Comment utiliser pour la mise à jour

Position d'utilisation :

select * from table where xxx for update

3. La table de verrouillage pour la mise à jour

InnoDB est par défaut au niveau de la ligne. verrous Lorsqu’il existe une clé primaire explicitement spécifiée, il s’agit d’un verrou au niveau de la ligne. Sinon c'est au niveau de la table.

Exemple : supposons que la table foods comporte trois champs : id, name et status id est la clé primaire et status a un index.

Exemple 1 : (Spécifiez explicitement la clé primaire, et il y a cet enregistrement, verrouillage au niveau de la ligne)

SELECT * FROM foods WHERE id=1 FOR UPDATE;
SELECT * FROM foods WHERE id=1 and name=‘码农编程进阶笔记’ FOR UPDATE;

Exemple 2 : (Spécifiez explicitement la clé primaire/l'index, s'il n'y a pas un tel enregistrement, pas de verrouillage)

SELECT * FROM foods WHERE id=-1 FOR UPDATE;

Exemple 3 : (Pas de clé primaire/index, verrouillage au niveau de la table)

SELECT * FROM foods WHERE name='Coder Programming Advanced Notes' FOR UPDATE ;

Exemple 4 : (Clé primaire/index peu clair, verrouillage au niveau de la table )

SELECT * FROM foods WHERE id<>‘3’ FOR UPDATE;
SELECT * FROM foods WHERE id LIKE ‘3’ FOR UPDATE;

4.for Notes sur la mise à jour

1 pour la mise à jour ne s'applique qu'à InnoDB, et les transactions doivent être activées pour prendre effet entre le début et la validation.

2. Pour tester la situation de verrouillage de la table pour la mise à jour, vous pouvez utiliser le mode commande de MySQL pour ouvrir deux fenêtres à des fins de test.

Apprentissage recommandé :

Tutoriel vidéo mysql

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