Maison base de données tutoriel mysql Principes et pratiques d'application des verrous MySQL

Principes et pratiques d'application des verrous MySQL

Dec 21, 2023 am 08:13 AM
mysql 应用实践

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;
Copier après la connexion

6.2 Ajout de données
Ensuite, ajoutons quelques données de test au tableau.

INSERT INTO `user` (`name`, `age`)
VALUES ('张三', 20), ('李四', 25), ('王五', 30);
Copier après la connexion

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;
Copier après la connexion

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;
Copier après la connexion
  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 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

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Compétences de traitement de structures de données volumineuses de PHP Compétences de traitement de structures de données volumineuses de PHP May 08, 2024 am 10:24 AM

Compétences de traitement de structures de données volumineuses de PHP

Comment optimiser les performances des requêtes MySQL en PHP ? Comment optimiser les performances des requêtes MySQL en PHP ? Jun 03, 2024 pm 08:11 PM

Comment optimiser les performances des requêtes MySQL en PHP ?

Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Jun 03, 2024 pm 12:19 PM

Comment utiliser la sauvegarde et la restauration MySQL en PHP ?

Comment insérer des données dans une table MySQL en utilisant PHP ? Comment insérer des données dans une table MySQL en utilisant PHP ? Jun 02, 2024 pm 02:26 PM

Comment insérer des données dans une table MySQL en utilisant PHP ?

Quels sont les scénarios d'application des types d'énumération Java dans les bases de données ? Quels sont les scénarios d'application des types d'énumération Java dans les bases de données ? May 05, 2024 am 09:06 AM

Quels sont les scénarios d'application des types d'énumération Java dans les bases de données ?

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Dec 09, 2024 am 11:42 AM

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4

Comment utiliser les procédures stockées MySQL en PHP ? Comment utiliser les procédures stockées MySQL en PHP ? Jun 02, 2024 pm 02:13 PM

Comment utiliser les procédures stockées MySQL en PHP ?

Comment la fonction de verrouillage dans Golang est-elle implémentée ? Comment la fonction de verrouillage dans Golang est-elle implémentée ? Jun 05, 2024 pm 12:39 PM

Comment la fonction de verrouillage dans Golang est-elle implémentée ?

See all articles