Maison > base de données > tutoriel mysql > La mise à jour dans MySQL verrouillera-t-elle la table ?

La mise à jour dans MySQL verrouillera-t-elle la table ?

WBOY
Libérer: 2022-05-26 14:42:36
original
8575 Les gens l'ont consulté

Il existe deux situations dans lesquelles la mise à jour dans MySQL verrouille la table : 1. Lorsque la mise à jour n'a pas d'index, la transaction précédente dans l'instruction est soumise via la validation, et la commande s'exécutera normalement et se terminera, puis la mise à jour se verrouillera. la table ; 2. Lorsque la mise à jour ajoute un index, la commande ne restera pas bloquée et ne verrouillera pas la table, mais elle mettra à jour la même ligne et provoquera un verrouillage de ligne.

La mise à jour dans MySQL verrouillera-t-elle la table ?

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

La mise à jour dans MySQL verrouillera-t-elle la table ?

S'il n'y a pas d'index, la mise à jour verrouillera la table. Si un index est ajouté, la ligne sera verrouillée

Lorsque la transaction précédente est soumise via la validation, la commande le sera. fonctionner normalement et se terminer. L'explication est La montre est verrouillée.

Deux situations :

  • 1. Avec index

  • 2. Sans index

Introduction aux prérequis :

Méthode : Utiliser la ligne de commande pour simuler

1.mysq est activé par défaut Valider automatiquement transactions, vous devez donc d'abord vérifier si la validation automatique des transactions est activée dans votre base de données actuelle.

Commande : sélectionnez @@autocommit ;

Le résultat est le suivant :

La mise à jour dans MySQL verrouillera-t-elle la table ?

S'il vaut 1, exécutez la commande : set autocommit = 0 ; défini pour ne pas activer la soumission automatique

2. le format de la table de base de données est le suivant

tb_user | CREATE TABLE `tb_user` (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `name` varchar(32) DEFAULT NULL,
 `phone` varchar(11) DEFAULT NULL,
 `operator` varchar(32) DEFAULT NULL,
 `gmt_create` datetime DEFAULT NULL,
 `gmt_modified` datetime DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
Copier après la connexion

Évidemment, je n'ai ajouté aucun index à l'exception de la clé primaire

Exemple réel :

1. Aucun index

Exécutez la commande : commencez la transaction, puis exécutez la commande. : update tb_user set phone=11where name="c1"; Pour modifier, ne validez pas la transaction au préalable.

Ouvrez une autre fenêtre et exécutez la commande directement : update tb_user set phone=22 which name="c2" ; vous constaterez que la commande est bloquée, mais lorsque la transaction précédente est soumise via commit, la commande s'exécutera normalement et se terminera. , indiquant que la montre est verrouillée.

2. Ajoutez un index au champ du nom

create index index_name on tb_user(name);
Copier après la connexion

Continuez ensuite l'opération en 1, qui consiste à ouvrir une transaction et à exécuter la mise à jour tb_user set phone=11 où name="c1";

puis une autre Exécutez la mise à jour tb_user set phone=22 où name="c2"; et constatez que la commande ne restera pas bloquée, indiquant qu'il n'y a pas de table de verrouillage

Mais si une autre mise à jour tb_user set phone=22 où name=" c1"; met à jour la même ligne, cela signifie qu'il n'y a pas de table de verrouillage

C'est un verrouillage de ligne

3. Résumé

S'il n'y a pas d'index, la mise à jour verrouillera la table. Si un index est ajouté, la ligne sera verrouillée

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal