Maison  >  Article  >  base de données  >  Qu'est-ce que la granularité du verrouillage MySQL ?

Qu'est-ce que la granularité du verrouillage MySQL ?

王林
王林original
2020-06-28 11:54:014324parcourir

La granularité du verrouillage MySQL est ce que nous appelons habituellement le niveau de verrouillage. Le moteur de base de données dispose d'un verrouillage multi-granularité, permettant à une transaction de verrouiller différents types de ressources. La base de données MySQL comporte trois niveaux de verrouillage : les verrous au niveau de la page, les verrous au niveau de la table et les verrous au niveau de la ligne.

Qu'est-ce que la granularité du verrouillage MySQL ?

Granarité du verrouillage

(tutoriel recommandé : tutoriel mysql)

La granularité du verrouillage est ce que nous appelons habituellement le niveau de verrouillage.

Le moteur de base de données dispose d'un verrouillage multi-granularité, permettant à une transaction de verrouiller différents types de ressources. Pour minimiser la surcharge de verrouillage, le moteur de base de données verrouille automatiquement les ressources à un niveau approprié pour la tâche.

Le verrouillage à une granularité plus petite (comme les lignes) peut augmenter la simultanéité, mais est plus coûteux car si de nombreuses lignes sont verrouillées, davantage de verrous doivent être maintenus. Le verrouillage à une granularité plus grande (comme une table) réduit la simultanéité car le verrouillage de la table entière empêche les autres transactions d'accéder à n'importe quelle partie de la table. Mais les frais généraux sont moindres car moins de verrous doivent être entretenus.

Hiérarchie de verrouillage

Les moteurs de base de données doivent souvent acquérir des verrous à plusieurs niveaux de granularité pour protéger pleinement les ressources. Cet ensemble de verrous à plusieurs niveaux de granularité est appelé hiérarchie de verrous. Par exemple, pour protéger pleinement les lectures d'un index, une instance du moteur de base de données peut devoir acquérir des verrous partagés sur les lignes et tenter de verrouiller les partages sur les pages et les tables.

MySQL a trois niveaux de verrouillage : niveau page, niveau table, niveau ligne

Les moteurs de stockage MyISAM et MEMORY utilisent le verrouillage au niveau de la table (verrouillage au niveau de la table) ;

Le moteur de stockage BDB utilise le verrouillage au niveau de la page, mais prend également en charge le verrouillage au niveau de la table ;

Le moteur de stockage InnoDB prend en charge le verrouillage au niveau de la ligne (verrouillage au niveau de la ligne), le verrouillage au niveau de la table est également pris en charge, mais le verrouillage au niveau des lignes est utilisé par défaut.

Les caractéristiques des verrous MySQL peuvent être résumées grossièrement comme suit  :

Verrous au niveau de la table : faible surcharge, verrouillage rapide sans blocage ; ; la granularité du verrouillage est grande, la probabilité de conflit de verrouillage est la plus élevée et la concurrence est la plus faible.

Verrouillages au niveau des lignes : des blocages de verrouillage lents et élevés peuvent survenir ; la granularité du verrouillage est la plus petite, la probabilité de conflits de verrouillage est la plus faible et la concurrence est la plus élevée.

Verrouillage de page : le coût et le temps de verrouillage se situent entre les verrous de table et les verrous de ligne ; la granularité du verrouillage se situe entre les verrous de table et les verrous de ligne, et la concurrence est moyenne.

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