Maison > Article > base de données > Principes et pratiques d'application des verrous MySQL
Le principe et la pratique d'application du verrouillage MySQL
Résumé : MySQL est un système de gestion de bases de données relationnelles couramment utilisé, doté de puissantes capacités de traitement simultané. Lorsque plusieurs utilisateurs accèdent à la base de données en même temps, afin de garantir la cohérence et l'intégrité des données, MySQL utilise un mécanisme de verrouillage pour contrôler l'accès aux ressources partagées. Cet article présentera les principes des verrous MySQL, y compris les niveaux de verrouillage, les classifications de verrous et les méthodes de gestion des conflits de verrouillage, et le combinera avec des exemples de code spécifiques pour démontrer la pratique d'application des verrous MySQL.
4.1 Verrouillages au niveau de la table : verrouillez la table entière, adaptés aux scénarios dans lesquels la table entière est utilisée, tels que la sauvegarde, les modifications de la structure de la table, etc.
4.2 Verrouillages au niveau des lignes : verrouillez une certaine ligne ou plusieurs lignes du tableau, adaptés aux scénarios dans lesquels une seule ou une petite quantité de données est exploitée, comme une requête, une mise à jour, etc.
5.1 Attente des verrous : lorsqu'une requête ne peut pas obtenir le verrou requis, MySQL ajoutera la requête à la file d'attente et attendra que le verrou soit libéré avant de la traiter.
5.2 Retour immédiat : Lorsqu'une requête ne peut pas obtenir le verrou requis, MySQL renverra immédiatement un message d'erreur sans entrer dans la file d'attente.
6.1 Créer une table de test
Tout d'abord, nous créons une table de test pour simuler des scénarios réels d'opération de données.
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6.2 Ajout de données
Ensuite, ajoutons quelques données de test au tableau.
INSERT INTO `user` (`name`, `age`) VALUES ('张三', 20), ('李四', 25), ('王五', 30);
6.3 Utiliser le verrouillage exclusif pour mettre à jour les données
Ensuite, nous utilisons le verrouillage exclusif pour mettre à jour les données.
START TRANSACTION; SELECT * FROM `user` WHERE `age` = 25 FOR UPDATE; UPDATE `user` SET `age` = 26 WHERE `age` = 25; COMMIT;
6.4 Utiliser le verrouillage partagé pour lire les données
Enfin, nous utilisons le verrouillage partagé pour lire les données.
START TRANSACTION; SELECT * FROM `user` WHERE `age` = 26 LOCK IN SHARE MODE; COMMIT;
Matériel de référence :
1. "Manuel de référence MySQL 5.7"
2. Livre "MySQL haute performance : optimisation, sauvegardes et réplication"
Ce qui précède est une introduction aux principes et aux pratiques d'application des verrous MySQL I. j'espère que cela sera utile à tout le monde. Aide lors de l'utilisation de MySQL pour le traitement simultané des bases de donné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!