Maison  >  Article  >  base de données  >  En quoi les verrous de base de données MySQL peuvent-ils être divisés en fonction de la granularité ?

En quoi les verrous de base de données MySQL peuvent-ils être divisés en fonction de la granularité ?

青灯夜游
青灯夜游original
2021-04-21 18:38:573978parcourir

Selon la granularité, il peut être divisé en : 1. Verrouillage au niveau de la ligne, qui est la granularité de verrouillage la plus fine dans MySQL Cela signifie que seule la ligne de l'opération en cours est verrouillée ; lock, qui est la granularité de verrouillage dans MySQL. Le type de verrou le plus important signifie verrouiller la table entière de l'opération en cours. 3. Verrou au niveau de la page, 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 ; .

En quoi les verrous de base de données MySQL peuvent-ils être divisés en fonction de la granularité ?

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Dans les bases de données relationnelles, les verrous de base de données peuvent être divisés en verrous au niveau de la ligne (moteur INNODB), verrous au niveau de la table (moteur MYISAM) et verrous au niveau de la page (moteur BDB) en fonction de la granularité du verrouillage.

Verrous utilisés par les moteurs de stockage MyISAM et InnoDB :

  • MyISAM utilise le verrouillage au niveau de la table.

  • InnoDB prend en charge le verrouillage au niveau de la ligne (verrouillage au niveau de la ligne) et le verrouillage au niveau de la table, et la valeur par défaut est le verrouillage au niveau de la ligne.

Comparaison des verrous au niveau des lignes, des verrous au niveau des tables et des verrous au niveau des pages

  • Verrous au niveau des lignes : granularité du verrouillage dans MySQL Le type de verrou le plus fin, ce qui signifie que seule la ligne de l'opération en cours est verrouillée. Les verrous au niveau des lignes peuvent réduire considérablement les conflits dans les opérations de base de données. Sa granularité de verrouillage est la plus petite, mais la surcharge de verrouillage est également la plus importante. Les verrous au niveau des lignes sont divisés en verrous partagés et verrous exclusifs.

    Caractéristiques : surcharge élevée, verrouillage lent ; des blocages lents peuvent survenir ; 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 table : le verrou avec la plus grande granularité de verrouillage dans MySQL, ce qui signifie verrouiller la table entière de l'opération en cours. Il est simple à mettre en œuvre, consomme moins de ressources et est. utilisé par la plupart des supports du moteur MySQL. Les MyISAM et InnoDB les plus couramment utilisés prennent en charge le verrouillage au niveau de la table. Les verrous au niveau de la table sont divisés en verrous de lecture partagés de table (verrous partagés) et verrous d'écriture exclusifs de table (verrous exclusifs).

    Caractéristiques : faible surcharge, verrouillage rapide ; pas de blocage ; grande granularité de verrouillage, probabilité la plus élevée de conflits de verrouillage et concurrence la plus faible.

  • Verrouillage au niveau de la page : il s'agit d'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 comportent de nombreux conflits. Les verrous au niveau des lignes présentent peu de conflits mais sont lents. Nous avons donc pris un niveau de page compromis et verrouillé un groupe d'enregistrements adjacents à la fois.

    Caractéristiques : les temps de surcharge et de verrouillage se situent entre les verrous de table et les verrous de ligne ; des blocages peuvent survenir ; la granularité du verrouillage se situe entre les verrous de table et les verrous de ligne, et la concurrence est moyenne

Recommandations d'apprentissage gratuites associées : Tutoriel vidéo 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:
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