Maison  >  Article  >  base de données  >  Principes et pratiques d'application des verrous MySQL

Principes et pratiques d'application des verrous MySQL

PHPz
PHPzoriginal
2023-12-21 08:13:381171parcourir

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.

  1. Introduction
    Avec le développement rapide d'Internet, la demande d'accès simultané aux bases de données augmente. Lorsque plusieurs utilisateurs accèdent à la base de données en même temps, s'il n'existe aucun mécanisme de verrouillage approprié, des problèmes de cohérence et d'intégrité des données se produiront. Par conséquent, MySQL fournit un mécanisme de verrouillage riche pour garantir l'intégrité et la fiabilité des données.
  2. Principe de verrouillage
    Dans MySQL, le verrouillage est un mécanisme utilisé pour restreindre l'accès aux ressources partagées. Lorsqu'un utilisateur ou une connexion doit modifier une ressource, il peut demander un verrouillage. Si la ressource est déjà verrouillée par un autre utilisateur ou connexion, la demande sera bloquée jusqu'à ce que la ressource soit libérée. MySQL prend en charge plusieurs niveaux de verrouillage, notamment les verrous au niveau de la table et les verrous au niveau des lignes.
  3. Classification des verrous
    Les verrous MySQL peuvent être divisés en deux catégories : les verrous partagés et les verrous exclusifs. Un verrou partagé, également appelé verrou de lecture, permet à plusieurs utilisateurs de lire la ressource en même temps, mais n'autorise pas les opérations de modification de la ressource. Un verrou exclusif est également appelé verrou en écriture. Il permet à un seul utilisateur de modifier la ressource. Les autres utilisateurs doivent attendre que le verrou en écriture soit libéré avant de pouvoir lire ou modifier la ressource.
  4. Niveaux de verrouillage
    MySQL fournit plusieurs niveaux de verrouillage et vous pouvez choisir le niveau de verrouillage approprié en fonction des besoins réels. Les niveaux de verrouillage courants incluent :

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.

  1. Méthodes de gestion des conflits de verrouillage
    MySQL dispose de différentes méthodes de gestion des conflits de verrouillage, notamment l'attente des verrous et le retour immédiat.

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.

  1. Exemple de pratique d'application
    Ce qui suit utilise un exemple spécifique pour démontrer la pratique d'application du verrouillage MySQL.

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;
  1. Conclusion
    Le mécanisme de verrouillage MySQL est un outil important pour garantir un accès simultané aux données et joue un rôle clé lorsque plusieurs utilisateurs accèdent à la base de données en même temps. En comprenant les principes, les classifications et les exemples d'application des verrous MySQL, nous pouvons mieux comprendre et utiliser le mécanisme de verrouillage de MySQL pour garantir la cohérence et l'intégrité des données.

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!

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