Maison  >  Article  >  base de données  >  Analyse détaillée des différences entre les moteurs de données MySQL InnoDB et MyISAM

Analyse détaillée des différences entre les moteurs de données MySQL InnoDB et MyISAM

怪我咯
怪我咯original
2017-07-05 11:23:091294parcourir

InnoDB et MyISAM sont les deux types de tables les plus couramment utilisés lors de l'utilisation de MySQL Chacun a ses propres avantages et inconvénients, selon l'application spécifique. La différence fondamentale est : le type MyISAM ne prend pas en charge les traitements avancés tels que le traitement des transactions, tandis que le type InnoDB prend en charge

La table de type MyISAM met l'accent sur les performances et ses temps d'exécution sont plus rapides que le type InnoDB, mais ne fournit pas prise en charge des transactions. InnoDB fournit une prise en charge des transactions et des fonctionnalités de base de données avancées telles que les clés étrangères.

MyIASM est une nouvelle version de la table IASM avec les extensions suivantes :
Portabilité au niveau binaire.
Colonne NULLindex.
A moins de fragmentation que les tables ISAM pour les lignes de longueur variable.
Prend en charge les fichiers volumineux.
Meilleure compression d'index.
Meilleure répartition statistique des clés.
Gestion auto_increment meilleure et plus rapide.

Voici quelques détails et différences spécifiques d'implémentation :

1.InnoDB ne prend pas en charge les index de type FULLTEXT.
2. InnoDB n'enregistre pas le nombre spécifique de lignes dans la table, c'est-à-dire que lors de l'exécution de select count(*) from table, InnoDB doit analyser la table entière pour en calculer le nombre. il y a des lignes, mais MyISAM n'a besoin que de lire simplement le nombre de lignes enregistrées. Notez que lorsque l'instruction count(*) contient une condition Where, les opérations des deux tables sont les mêmes.
3. Pour les champs de type AUTO_INCREMENT, InnoDB doit contenir un index avec uniquement ce champ, mais dans la table MyISAM, un index conjoint peut être établi avec d'autres champs.
4. Lorsque DELETE FROM table, InnoDB ne recréera pas la table, mais supprimera ligne par ligne.
5. L'opération LOAD TABLE FROM MASTER ne fonctionne pas pour InnoDB. La solution consiste d'abord à changer la table InnoDB en table MyISAM, puis à la changer en table InnoDB après avoir importé les données. (telles que les tables de clés externes) ne sont pas applicables.

De plus, le verrouillage des lignes de la table InnoDB n'est pas absolu. Si MySQL ne peut pas déterminer la plage à analyser lors de l'exécution d'une instruction SQL, la table InnoDB verrouillera également la table entière, par exemple la table de mise à jour. set num=1 which name like "%aaa%"

Aucune table n'est omnipotente. Ce n'est qu'en choisissant le type de table approprié en fonction du type d'entreprise que les avantages en termes de performances de MySQL peuvent être maximisés.

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