Maison  >  Article  >  base de données  >  Comparaison entre les moteurs de stockage MySQL MyISAM et InnoDB

Comparaison entre les moteurs de stockage MySQL MyISAM et InnoDB

小云云
小云云original
2017-11-21 13:52:471648parcourir

Les données dans MySQL sont stockées dans des fichiers (ou en mémoire) à l'aide de diverses technologies. Chacune de ces technologies utilise différents mécanismes de stockage, techniques d'indexation, niveaux de verrouillage et offre finalement un large éventail de fonctionnalités et de capacités différentes. En choisissant différentes technologies, vous pouvez gagner en vitesse ou en fonctionnalités supplémentaires qui améliorent la fonctionnalité globale de votre application.

MySQL dispose de plusieurs moteurs de stockage, MyISAM et InnoDB sont deux moteurs couramment utilisés. Voici quelques concepts de base sur ces deux moteurs (pas une introduction approfondie).

MyISAM est le moteur de stockage par défaut pour MySQL. Il est basé sur le type ISAM traditionnel et prend en charge la recherche en texte intégral, mais il n'est pas sécurisé pour les transactions et ne prend pas en charge les clés étrangères. Chaque table MyISAM est stockée dans trois fichiers : le fichier frm stocke la définition de la table ; le fichier de données est MYD (MYData) ; le fichier d'index est MYI (MYIndex).

InnoDB est un moteur transactionnel qui prend en charge la restauration, la récupération après incident, le contrôle de concurrence multi-version, les transactions ACID et le verrouillage au niveau des lignes (le verrouillage des lignes de la table InnoDB n'est pas absolu. Si MySQL Si la portée de être analysé ne peut pas être déterminé, la table InnoDB verrouillera également la table entière, comme l'instruction SQL lors d'une opération similaire) et fournira une méthode de lecture sans verrouillage cohérente avec le type Oracle. InnoDB stocke ses tables et index dans un tablespace, qui peut contenir plusieurs fichiers.

Principale différence :

MyISAM n'est pas sécurisé sur le plan transactionnel, tandis qu'InnoDB est sécurisé sur le plan transactionnel.

La granularité du verrouillage MyISAM est au niveau de la table, tandis qu'InnoDB prend en charge le verrouillage au niveau de la ligne.

MyISAM prend en charge l'index de type texte intégral, mais InnoDB ne prend pas en charge l'index de texte intégral.

MyISAM est relativement simple, il est donc meilleur qu'InnoDB en termes d'efficacité. Les petites applications peuvent envisager d'utiliser MyISAM.

Les tables MyISAM sont enregistrées sous forme de fichiers. L'utilisation du stockage MyISAM dans le transfert de données multiplateforme évitera bien des problèmes.

Les tables InnoDB sont plus sécurisées que les tables MyISAM. Vous pouvez basculer les tables non transactionnelles vers les tables transactionnelles (alter table tablename type=innodb) tout en garantissant que les données ne seront pas perdues.

Scénario d'application :

MyISAM gère les tables non transactionnelles. Il offre un stockage et une récupération à grande vitesse, ainsi que des capacités de recherche en texte intégral. Si votre application doit effectuer un grand nombre de requêtes SELECT, MyISAM est un meilleur choix.
InnoDB est utilisé pour les applications de traitement de transactions et possède de nombreuses fonctionnalités, notamment la prise en charge des transactions ACID. Si votre application doit effectuer un grand nombre d'opérations INSERT ou UPDATE, vous devez utiliser InnoDB, qui peut améliorer les performances des opérations simultanées multi-utilisateurs.
Commandes communes :

(1) Afficher le type de stockage de la table (trois types) :

show create table tablename
show table status from dbname Where name=tablename
mysqlshow -u user -p password --status dbname tablename

(2) Modifier le moteur de stockage de la table :

alter table tablename type=InnoDB

( 3) Démarrez mysql Ajoutez les paramètres suivants à la ligne de commande de la base de données pour que les tables nouvellement publiées utilisent les transactions par défaut :

--default-table-type=InnoDB

(4) Temporairement changez le type de table par défaut :

set table_type=InnoDB
show variables like 'table_type'

Ce qui précède est une brève introduction aux deux moteurs de stockage de MySQL, MyISAM et InnoDB, ainsi que une introduction aux différences entre les deux moteurs.

Recommandations associées :

Un exemple simple du moteur de stockage MERGE de MySQL

transaction mysql et moteur de stockage mysql_MySQL

Quelles sont les différences entre les deux moteurs MySQL

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