Maison  >  Article  >  base de données  >  Comment comprendre le mécanisme de verrouillage MySQL

Comment comprendre le mécanisme de verrouillage MySQL

王林
王林avant
2020-01-21 20:04:002155parcourir

Comment comprendre le mécanisme de verrouillage MySQL

Aperçu des verrous MySQL

Comparé à d'autres bases de données, le mécanisme de verrouillage de MySQL est relativement simple, et sa caractéristique la plus importante est que différents moteurs de stockage prennent en charge différents mécanismes de verrouillage. Par exemple, les moteurs de stockage MyISAM et MEMORY utilisent le verrouillage au niveau des tables. Le moteur de stockage BDB utilise le verrouillage au niveau de la page, mais il prend également en charge les verrouillages au niveau de la table. Le moteur de stockage InnoDB prend en charge à la fois le verrouillage au niveau des lignes et le verrouillage au niveau des tables, mais le verrouillage au niveau des lignes est utilisé par défaut.

Verrouillage au niveau de la table : le verrouillage au niveau de la table est le verrou avec la plus grande granularité dans MySQL, ce qui signifie verrouiller la table entière de l'opération en cours. Il a une faible surcharge et un verrouillage rapide ; aucun blocage ne se produira ; la granularité du verrouillage est grande, la probabilité de conflit de verrouillage est la plus élevée et la concurrence est la plus faible.

Partage de didacticiels vidéo d'apprentissage gratuit : Tutoriel vidéo MySQL

Verrouillage au niveau des lignes : le verrouillage au niveau des lignes est le verrou le plus granulaire de MySQL, ce qui signifie qu'il est uniquement destiné le courant La ligne en cours d'exploitation est verrouillée. La surcharge est élevée et le verrouillage est lent ; des blocages peuvent se produire ; la granularité du verrouillage est la plus faible, la probabilité de conflits de verrouillage est la plus faible et la concurrence est la plus élevée.

Verrouillage au niveau de la page : le verrouillage au niveau de la page est un verrou dans MySQL dont la granularité de verrouillage se situe entre les verrous au niveau de la ligne et les verrous au niveau de la table. Les verrous au niveau des tables sont rapides, mais entraînent de nombreux conflits. Il y a moins de conflits au niveau des lignes, mais c'est plus lent. Nous avons donc pris un niveau de page compromis et verrouillé un groupe d'enregistrements adjacents à la fois. BDB prend en charge les verrous au niveau de la page. La surcharge et le temps de verrouillage se situent entre les verrous de table et les verrous de ligne ; des blocages se produiront ; la granularité du verrouillage se situe entre les verrous de table et les verrous de ligne, et la concurrence est moyenne.

Il ressort des caractéristiques ci-dessus qu'il est difficile de dire quelle serrure est la meilleure en général. Nous pouvons seulement dire quelle serrure est la plus appropriée en fonction des caractéristiques d'applications spécifiques ! ! Du point de vue du verrouillage uniquement : les verrous au niveau de la table conviennent mieux aux applications principalement basées sur des requêtes et dont seule une petite quantité de données est mise à jour en fonction des conditions d'index, telles que les applications Web. Les verrous au niveau des lignes conviennent mieux aux applications dans lesquelles un grand nombre de données différentes sont mises à jour simultanément en fonction des conditions d'indexation et où il existe des requêtes simultanées, telles que certains systèmes de traitement de transactions en ligne (OLTP).

Exemples

1. Lors de l'achat d'un produit, lorsqu'il n'y a qu'un seul produit en stock et que deux personnes l'achètent en même temps, qui achète. c'est un problème.

2. Les transactions seront utilisées. Tout d'abord, récupérez les données de l'article du tableau d'inventaire, puis insérez la commande. Après le paiement, insérez les informations du tableau de paiement.

3. Mettre à jour la quantité de marchandises. Dans ce processus, les verrous peuvent être utilisés pour protéger des ressources limitées et résoudre la contradiction entre l'isolement et la concurrence.

Classification des verrous

Par opération :

Verrou en lecture (verrou partagé) : plusieurs lectures pour les mêmes données Des opérations peuvent être effectuées simultanément sans s’influencer mutuellement.

Verrouillage en écriture (verrouillage exclusif) : avant que l'opération d'écriture en cours ne soit terminée, les autres verrous en écriture et en lecture seront bloqués.

Selon la granularité :

Verrouillage de table, verrouillage de ligne, verrouillage de page

Tutoriels d'articles associés recommandés : Tutoriel 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer