Maison > base de données > tutoriel mysql > le corps du texte

Index clusterisé Mysql

黄舟
Libérer: 2017-01-20 17:07:28
original
1625 Les gens l'ont consulté

Aperçu général

1. La ligne de données est stockée directement sur le fichier d'index principal d'innodb, appelé index clusterisé. L'index secondaire pointe vers une référence à la clé primaire

<.>2. Dans myisam, les index et sous-index principaux pointent tous deux vers des lignes physiques (emplacements de disque)

Haha, j'ai dit deux mots que je n'ai pas semblé comprendre.

Un. Explication populaire

Nous pouvons le comprendre de cette façon :

Index clusterisé (innodb) : le nœud feuille de l'index est le nœud de données, et il y a des données réelles en dessous.

Index non clusterisé (myisam) : Les nœuds feuilles sont toujours des nœuds d'index, avec des pointeurs pointant vers les blocs de données correspondants.

Expliquez avec des images :

Index clusterisé Mysql

Index clusterisé Mysql

Comme vous pouvez le voir, les types sous différents moteurs sont différents.

La principale différence est de savoir s'il y a des blocs de données sous les nœuds feuilles.

(S'il n'y a pas de clé primaire, il en créera une..innodb est organisé par index clusterisé)

2. Avantages et inconvénients :

Problème de division :

Comme il s'agit d'une structure arborescente, les nœuds feuilles peuvent être divisés


Ensuite, le problème vient ,

Pour les index non clusterisés (myisam), l'adresse de ligne physique stockée sous le nœud a un petit contenu, est mise en cache en mémoire et se divise rapidement.

Pour les index clusterisés (innodb), ce problème est plus grave. Les "données de ligne" sont stockées sous le nœud

Comme il y a des fichiers de données sous le nœud, le fractionnement du nœud sera effectué. être plus lent, innodb Pour la clé primaire, essayez d'utiliser des entiers et des entiers incrémentiels. Si les données de la clé primaire sont irrégulières, elles seront divisées lorsqu'elles sont stockées dans le nœud feuille. Le processus de division doit être redivisé avec des "données de ligne". et myisam n'enregistre qu'une seule adresse, à condition de simplement diviser l'adresse et de la remplacer.

Par exemple :

Par exemple, le fractionnement est comme un processus de déplacement pour un index clusterisé (innodb), le déplacement nécessite en réalité de diviser et de déplacer toutes les données de la maison. (mysiam), il est facile de déplacer le numéro de la maison enregistrée, mais les données vers lesquelles il pointe n'ont pas besoin d'être déplacées.


Trois. Démonstration de test :

Sous le moteur innodb, insérez 1000 données de deux manières : régulière et irrégulière.

Après les tests, la première insertion dans l'ordre croissant des clés primaires a pris 37 secondes ; la deuxième insertion dans un ordre dans le désordre a pris 42 secondes, soit 5 secondes plus lentes. une insertion dans l'ordre doit être effectuée. Le fractionnement des nœuds feuilles prend du temps à se déplacer, ce qui signifie que la différence de temps se situe entre le fractionnement des nœuds et le déplacement des pages, tandis que l'insertion séquentielle provoque rarement le fractionnement des nœuds.

Index clusterisé Mysql

Conclusion du mappage :

1. Utilisez le moteur mysiam pour les opérations de lecture

2. Sélectionnez les données monotones comme index, qui seront plus rapide

Plus : Résumé de l'index Mysql


Vérifiez-le ci-dessous :

afficher les variables telles que "%innodb%"

afficher le statut ;

Vous constaterez qu'il y a un champ ->innodb_pages_writing (combien de pages ont été écrites dans ce champ)

Index clusterisé Mysql

Quand en écrivant de manière aléatoire, le nombre de fois que la page est écrite est supérieur à celui de l'écriture séquentielle. Cela est dû au fractionnement et au déplacement, donc le nombre d'écritures est plus grand et le temps est passé plus, ce qui explique également pourquoi il y a un 5-. deuxième différence d'événement entre les deux.


MyISAM :

Il s'agit du type par défaut, qui est basé sur le type ISAM traditionnel. ISAM est la méthode d'accès séquentiel indexé (méthode d'accès séquentiel indexé). Abréviation de, il s'agit d'une méthode standard de stockage d'enregistrements et de fichiers. Par rapport à d'autres moteurs de stockage, MyISAM dispose de la plupart des outils pour vérifier et réparer les tables. Les tables MyISAM peuvent être compressées et prennent en charge la recherche en texte intégral. Elles ne sont pas sécurisées pour les transactions et ne prennent pas en charge les clés étrangères. Si les choses sont annulées, cela entraînera une restauration incomplète et n’est pas atomique. Si vous exécutez un grand nombre de SELECT, MyISAM est un meilleur choix.


InnoDB :

Ce type est sécurisé pour les transactions. Il a les mêmes caractéristiques que les types BDB, ils prennent également en charge les clés étrangères et sont très rapides. . Il a des fonctionnalités plus riches que BDB, donc si vous en avez besoin. Si vous souhaitez un moteur de stockage sécurisé pour les transactions, il est recommandé de l'utiliser. Si vos données effectuent un grand nombre d'INSERT ou de UPDATE, pour des raisons de performances, vous devez utiliser la table InnoDB

Ce qui précède est le contenu. de l'index clusterisé Mysql, Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !


Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!