Maison > Article > base de données > Introduction au mécanisme de verrouillage de la base de données MySQL
Cet article vous apporte une introduction au mécanisme de verrouillage de la base de données MySQL. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Introduction au mécanisme de verrouillage MySQL
Le mécanisme de verrouillage de la base de données consiste simplement dans le fait que la base de données crée diverses ressources partagées afin d'assurer la cohérence des données. Une règle conçue pour rendre l’accès simultané ordonné.
Tout type de base de données nécessite un mécanisme de verrouillage correspondant, donc MySQL ne fait naturellement pas exception.
En raison des caractéristiques de sa propre architecture, la base de données MySQL dispose d'une variété de moteurs de stockage de données. Chaque moteur de stockage a des caractéristiques de scénario d'application différentes afin de répondre aux besoins de chacun. scénario d'application Selon les exigences, le mécanisme de verrouillage de chaque moteur de stockage est optimisé et conçu pour les scénarios spécifiques auxquels ils sont confrontés. Par conséquent, les mécanismes de verrouillage des différents moteurs de stockage sont également très différents.
En général, les moteurs de stockage MySQL utilisent trois types (niveaux) de mécanismes de verrouillage : le verrouillage au niveau de la ligne, le verrouillage au niveau de la page et le verrouillage au niveau de la table.
Verrouillage au niveau de la ligne (niveau de la ligne)
Verrouillage au niveau de la ligne, fait généralement référence au verrouillage exclusif, c'est-à-dire que les lignes verrouillées ne peuvent pas être modifiées ou supprimées et ne peuvent être sélectionnées que par d'autres sessions.
Le verrouillage exclusif est également appelé verrouillage en écriture, ou verrouillage X en abrégé, le verrouillage exclusif ne peut pas coexister avec d'autres verrous si une transaction acquiert un verrou exclusif sur une ligne de données. , les autres transactions ne pourront pas être acquises. Aucun autre verrou ne pourra être acquis sur la ligne.
La plus grande caractéristique du verrouillage au niveau des lignes est que la granularité de l'objet verrouillé est très petite, et c'est également la plus petite granularité de verrouillage actuellement implémentée par les principaux logiciels de gestion de bases de données.
Étant donné que la granularité du verrouillage est très faible, la probabilité d'une concurrence entre les ressources de verrouillage est également faible, ce qui peut donner à l'application autant de capacités de traitement simultané que possible et améliorer les performances globales de certains systèmes élevés. -systèmes d'applications simultanées.
Bien qu'il présente de grands avantages en termes de capacités de traitement simultané, le verrouillage au niveau des lignes présente également de nombreux inconvénients.
Étant donné que la granularité des ressources de verrouillage est très faible, beaucoup de choses doivent être faites à chaque fois pour acquérir et libérer le verrou, et la consommation sera naturellement plus importante.
De plus, le verrouillage au niveau des lignes est également le plus sujet aux blocages.
Verrouillage au niveau de la table (niveau table)
Verrouillage au niveau de la table, verrouille directement toute la table, dans votre Bien verrouillé, les autres processus ne peuvent pas écrire dans la table. Si vous disposez d'un verrou en écriture, les autres processus ne sont pas autorisés à lire.
Contrairement au verrouillage au niveau des lignes, le verrouillage au niveau des tables est le mécanisme de verrouillage le plus granulaire parmi les moteurs de stockage MySQL.
La plus grande caractéristique de ce mécanisme de verrouillage est que la logique de mise en œuvre est très simple et a un impact négatif minimal sur le système. L’acquisition et la libération des verrous sont donc très rapides.
Étant donné que les verrous au niveau de la table verrouillent la table entière en même temps, le problème de blocage qui nous tourmente peut être évité.
Bien sûr, l'impact négatif d'une grande granularité de verrouillage est que la probabilité de conflit de ressources sera très élevée, ce qui réduira considérablement la concurrence.
Verrouillage au niveau de la page (page-level)
Le verrouillage au niveau de la page est un type unique de verrouillage dans Le niveau MySQL n'est pas très courant dans d'autres logiciels de gestion de bases de données.
La caractéristique du verrouillage au niveau de la page est que la granularité du verrouillage se situe entre le verrouillage au niveau de la ligne et le verrouillage au niveau de la table, donc la surcharge de ressources requise pour obtenir le verrou et les capacités de traitement simultanées il peut fournir Il se situe également quelque part entre les deux ci-dessus.
De plus, des blocages peuvent également se produire avec le verrouillage au niveau de la page et le verrouillage au niveau de la ligne.
Résumé
Dans le processus de verrouillage des ressources dans la base de données, à mesure que la granularité des ressources verrouillées diminue, La quantité de mémoire nécessaire pour verrouiller la même quantité de données augmente et l'algorithme de mise en œuvre deviendra de plus en plus complexe.
À mesure que la granularité des ressources verrouillées diminue, la possibilité que les demandes d'accès aux applications rencontrent des attentes de verrouillage diminuera également et la concurrence globale du système augmentera.
Dans MySQL, le verrouillage au niveau des tables est utilisé par certains moteurs de stockage non transactionnels tels que MyISAM, MEmory, CSv, etc., tandis que le verrouillage au niveau des lignes est principalement utilisé par le stockage InnoDB. et le stockage du cluster NDB, le verrouillage au niveau de la page est principalement la méthode de verrouillage du moteur de stockage BerkeleyDB.
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!