mysql - convertir - myisam to innodb



Quelle est la différence entre MyISAM et InnoDB? (2)

Les principales différences entre InnoDB et MyISAM («en ce qui concerne la conception d'une table ou d'une base de données» que vous avez posées) sont le support de «l'intégrité référentielle» et des «transactions».

Si vous avez besoin de la base de données pour appliquer des contraintes de clés étrangères ou si vous avez besoin de la base de données pour supporter des transactions (par exemple, deux ou plusieurs opérations DML traitées comme une seule unité de travail, toutes les modifications étant appliquées ou toutes les modifications alors vous choisirez le moteur InnoDB, car ces fonctionnalités sont absentes du moteur MyISAM.

Ce sont les deux plus grandes différences. Une autre grande différence est la concurrence. Avec MyISAM, une instruction DML obtiendra un verrou exclusif sur la table, et tant que ce verrou est maintenu, aucune autre session ne peut effectuer une opération SELECT ou DML sur la table.

Ces deux moteurs spécifiques que vous avez interrogés (InnoDB et MyISAM) ont des objectifs de conception différents. MySQL possède également d'autres moteurs de stockage, avec leurs propres objectifs de conception.

Ainsi, en choisissant entre InnoDB et MyISAM, la première étape consiste à déterminer si vous avez besoin des fonctionnalités fournies par InnoDB. Si non, alors MyISAM est à considérer.

Une discussion plus détaillée des différences est plutôt impraticable (dans ce forum) absent une discussion plus détaillée de l'espace de problème ... comment l'application utilisera la base de données, combien de tables, la taille des tables, la charge de transaction, les volumes de , insérer, mises à jour, exigences de simultanéité, fonctionnalités de réplication, etc.

La conception logique de la base de données devrait être centrée sur l'analyse des données et les besoins des utilisateurs; le choix d'utiliser une base de données relationnelle viendrait plus tard, et même plus tard le choix de MySQL comme système de gestion de base de données relationnelle, puis la sélection d'un moteur de stockage pour chaque table.

Cette question a déjà une réponse ici:

Je comprends que cette question a déjà été posée, mais la plupart du temps elle est posée en relation avec une base de données ou un tableau spécifique. Je ne peux pas trouver une réponse sur ce site qui décrit les deux moteurs et leurs différences sans égard à la base de données spécifique de quelqu'un.

Je veux être en mesure de prendre des décisions plus éclairées à l'avenir en ce qui concerne la conception d'une table ou d'une base de données, alors je cherche une réponse complète sur les différences entre les deux moteurs de stockage.

Quelle est la différence entre MyISAM et InnoDB , et que dois-je rechercher en essayant de choisir entre l'un ou l'autre?


Answer #1

MYISAM:

  1. MYISAM prend en charge le verrouillage au niveau de la table
  2. MyISAM conçu pour le besoin de vitesse
  3. MyISAM ne supporte pas les clés étrangères donc nous appelons MySQL avec MYISAM est SGBD
  4. MyISAM stocke ses tables, données et index dans l'espace disque en utilisant trois fichiers distincts. (nom_table.FRM, nom_table.MYD, nom_table.MYI)
  5. MYISAM ne prend pas en charge la transaction. Vous ne pouvez pas valider et restaurer avec MYISAM. Une fois que vous émettez une commande, c'est fait.
  6. MYISAM prend en charge la recherche de texte intégral
  7. Vous pouvez utiliser MyISAM, si la table est plus statique avec beaucoup de sélection et moins de mise à jour et de suppression.

INNODB:

  1. InnoDB prend en charge le verrouillage au niveau de la ligne
  2. InnoDB conçu pour une performance maximale lors du traitement de gros volumes de données
  3. InnoDB supporte les clés étrangères donc nous appelons MySQL avec InnoDB est RDBMS
  4. InnoDB stocke ses tables et ses index dans un espace de table
  5. InnoDB prend en charge la transaction. Vous pouvez valider et restaurer avec InnoDB




myisam