Maison > Article > base de données > Analyse des moteurs de stockage couramment utilisés dans MySQL
Le contenu de cet article concerne l'analyse des moteurs de stockage couramment utilisés dans MySQL. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
MyISAM : Chaque MyISAM est stocké sous forme de trois fichiers sur le disque. 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).MyISAM est le moteur de base de données par défaut de MySQL (avant la version 5.5), qui a été amélioré par rapport au premier ISAM (Indexed Sequential Access Method : Indexed Sequential Access Method). Bien que les performances soient excellentes, elle présente un inconvénient : elle ne prend pas en charge le traitement des transactions.
InnoDB est l'un des moteurs de base de données de MySQL et l'un des standards binaires publiés par MySQL AB. Par rapport à ISAM et MyISAM traditionnels, la plus grande caractéristique d'InnoDB est qu'il prend en charge les transactions.
Quelle est la différence entre MyISAM et InnoDB ? Le résumé est le suivant :
1. Structure de stockage
MyISAM : Chaque MyISAM est stocké sous forme de trois fichiers sur le disque. 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 enregistré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.
2. Espace de stockage
MyISAM : peut être compressé et dispose d'un espace de stockage plus petit. Prend en charge trois formats de stockage différents : table statique (par défaut, mais veuillez noter qu'il ne doit y avoir aucun espace à la fin des données, elles seront supprimées), table dynamique et table compressée.
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.
3. Portabilité, sauvegarde et récupération
MyISAM : Les données sont stockées sous forme de fichiers, ce qui est donc très pratique pour le transfert de données multiplateforme. Vous pouvez effectuer des opérations sur une table individuellement pendant la sauvegarde et la restauration.
InnoDB : les solutions gratuites incluent la copie de fichiers de données, la sauvegarde du binlog ou l'utilisation de mysqldump, ce qui est relativement pénible lorsque le volume de données atteint des dizaines de gigaoctets.
4. Prise en charge des transactions
MyISAM : L'accent est mis sur les performances, chaque requête est atomique et son temps d'exécution est plus rapide que le type InnoDB, mais ce n'est pas le cas. fournir un support aux 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.
5. AUTO_INCREMENT
MyISAM : Vous pouvez créer un index commun avec d'autres champs. La colonne de croissance automatique du moteur doit être un index. S'il s'agit d'un index combiné, la colonne de croissance automatique n'a pas besoin d'être la première colonne. Elle peut être triée selon les colonnes précédentes puis incrémentée.
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.
6. Différences de verrouillage de table
MyISAM : ne prend en charge que les verrous au niveau de la table. Lorsque les utilisateurs utilisent les tables myisam, les instructions de sélection, de mise à jour, de suppression et d'insertion le seront toutes. automatiquement attribué à la table Verrouillage, si la table verrouillée satisfait à 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.
7. Index de texte intégral
MyISAM : prend en charge l'index de texte intégral de type FULLTEXT
InnoDB : ne prend pas en charge l'index de texte intégral de type FULLTEXT , mais innodb peut l'utiliser. Le plug-in sphinx prend en charge l'indexation en texte intégral et l'effet est meilleur.
8. Clé primaire de table
MyISAM : permet aux tables sans index ni clés primaires d'exister. Les index sont les adresses où les lignes sont enregistrées.
InnoDB : Si aucune clé primaire ou index unique non vide n'est défini, une clé primaire de 6 octets (invisible pour l'utilisateur) sera automatiquement générée. Les données font partie de l'index primaire, et l'ajouté. index enregistre la valeur de l'index principal.
9. Le nombre spécifique de lignes dans le tableau
MyISAM : enregistre le nombre total de lignes dans le tableau. la valeur sera retirée directement.
InnoDB : Le nombre total de lignes dans la table n'est pas enregistré. Si vous utilisez select count() from table, cela parcourra toute la table, ce qui consomme beaucoup d'argent. condition, myisam et innodb le traitent de la même manière.
10. Opération CURD
MyISAM : Si vous effectuez un grand nombre de SELECT, MyISAM est un meilleur choix.
InnoDB : Si vos données effectuent beaucoup d'INSERT ou de UPDATE, vous devez utiliser une table InnoDB pour des raisons de performances. DELETE est meilleur en termes de performances qu'InnoDB, mais lorsque DELETE FROM table, InnoDB ne recréera pas la table, mais la supprimera ligne par ligne. Si vous souhaitez effacer une table avec une grande quantité de données sur InnoDB, cela. Il est préférable d'utiliser la commande tronquer la table.
11. Clé étrangère
MyISAM : non pris en charge
InnoDB : pris en charge
Grâce à l'analyse ci-dessus, cela peut fondamentalement être InnoDB est considéré comme utilisé pour remplacer le moteur MyISAM, mais dans les applications réelles, la situation spécifique peut être considérée par vous-même.
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!