Maison > Article > base de données > Analyse comparative d'InnoDB et MyISAM dans MySQL
MyISAM : Chaque MyISAM est stocké sous forme de trois fichiers sur le disque. Il s'agit des fichiers de définition de table, des fichiers de données et des fichiers d'index. Le nom du premier fichier commence par le nom de la table et l'extension indique le type de fichier. Les fichiers .frm stockent les définitions de table. L'extension du fichier de données est .MYD (MYData). L'extension du fichier d'index est .MYI (MYIndex).
InnoDB : Toutes les tables sont stockées dans le même fichier de données (ou dans plusieurs fichiers, ou dans des fichiers d'espace table indépendants). La taille de la table InnoDB n'est limitée que par la taille du fichier du système d'exploitation, généralement 2 Go. .
MyISAM : MyISAM prend en charge trois formats de stockage différents : table statique (par défaut, mais notez que la fin des données ne peut pas S'il y a des espaces, ils seront supprimés), les tableaux dynamiques et les tableaux compressés. Une fois la table créée et les données importées, aucune opération de modification ne sera effectuée. Vous pouvez utiliser des tables compressées pour réduire considérablement l'utilisation de l'espace disque.
InnoDB : Nécessite plus de mémoire et de stockage, il établira son propre pool de tampons dédié dans la mémoire principale pour la mise en cache des données et des index.
MyISAM : Les données sont stockées sous forme de fichiers, donc transfert de données multiplateforme La réunion est très pratique. Vous pouvez effectuer des opérations sur une table individuellement pendant la sauvegarde et la restauration.
InnoDB : La solution gratuite peut être de copier des fichiers de données, de sauvegarder le binlog, ou d'utiliser mysqldump, ce qui est relativement pénible lorsque le volume de données atteint des dizaines de G.
MyISAM : L'accent est mis sur les performances, chaque requête est atomique et ses temps d'exécution sont supérieurs à ceux d'InnoDB. tapez Fast, mais ne fournit pas de prise en charge des transactions.
InnoDB : Fournit une prise en charge des transactions, des clés étrangères et d'autres fonctions de base de données avancées. Tables sécurisées pour les transactions (conformes à l'ACID) avec capacités de transaction (validation), de restauration (rollback) et de récupération après incident.
MyISAM : Peut créer un index conjoint avec d'autres champs. La colonne à croissance automatique du moteur doit être un index. S'il s'agit d'un index combiné, la colonne à croissance automatique n'a pas besoin d'être la première colonne. Elle peut être triée et incrémentée en fonction des colonnes précédentes.
InnoDB : InnoDB doit contenir un index avec uniquement ce champ. La colonne à croissance automatique du moteur doit être un index, et s'il s'agit d'un index composite, elle doit également être la première colonne de l'index composite.
MyISAM : seuls les verrous au niveau de la table sont pris en charge. Lorsque l'utilisateur utilise la table myisam, sélectionnez, mettez à jour. , delete, L'instruction insert verrouille automatiquement la table. Si la table verrouillée répond à la concurrence d'insertion, de nouvelles données peuvent être insérées à la fin de la table.
InnoDB : La prise en charge des transactions et des verrous au niveau des lignes est la fonctionnalité la plus importante d'InnoDB. Les verrous de ligne améliorent considérablement les performances des opérations simultanées multi-utilisateurs. Cependant, le verrouillage de ligne d'InnoDB n'est valable que sur la clé primaire de WHERE. Toute clé non primaire WHERE verrouillera la table entière.
MyISAM : prend en charge l'index de texte intégral de type FULLTEXT
InnoDB : ne prend pas en charge l'indexation de texte intégral de type FULLTEXT, mais innodb peut utiliser le plug-in sphinx pour prendre en charge l'indexation de texte intégral, et l'effet est meilleur.
MyISAM : permet aux tables sans index ni clés primaires d'exister.
InnoDB : S'il n'y a pas de clé primaire ou d'ensemble d'index unique non vide, une clé primaire de 6 octets (invisible pour l'utilisateur) sera automatiquement générée. Les données font partie de l'index principal, et l'index supplémentaire enregistre la valeur principale de l'index.
MyISAM : Enregistrez le nombre total de lignes dans le tableau, si vous sélectionnez le nombre ( ) du tableau ; retirera directement la valeur.
InnoDB : Le nombre total de lignes dans la table n'est pas enregistré. Si vous utilisez select count(*) from table, il parcourra toute la table, ce qui consomme beaucoup d'argent. Cependant, après avoir ajouté la condition wehre, myisam Il est traité de la même manière qu'innodb.
MyISAM : Si vous effectuez un grand nombre de SELECT, MyISAM est un meilleur choix.
InnoDB : Si vos données effectuent un grand nombre d'INSERT ou de UPDATE, vous devez utiliser une table InnoDB pour des raisons de performances.
MyISAM : non pris en charge
InnoDB : pris en charge
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!