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 :
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.
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)
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 (www.php.cn) !