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 une table spécifique. Je ne trouve pas de 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 souhaite pouvoir 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. Je cherche donc 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 devrais-je rechercher lorsque je tente de choisir entre l'un ou l'autre?
Les principales différences entre InnoDB et MyISAM ("en ce qui concerne la conception d'une table ou d'une base de données" sur laquelle vous avez posé la question) sont la prise en charge 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é étrangère ou de la base de données pour prendre en charge des transactions (modifications apportées par deux opérations DML ou plus traitées comme une seule unité de travail, toutes les modifications étant appliquées ou annulées). vous choisiriez alors le moteur InnoDB, car ces fonctions 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 sera maintenu, aucune autre session ne pourra effectuer d'opération SELECT ou DML sur la table.
Les deux moteurs spécifiques sur lesquels vous avez posé des questions (InnoDB et MyISAM) ont des objectifs de conception différents. MySQL dispose également d'autres moteurs de stockage, avec leurs propres objectifs de conception.
Ainsi, pour choisir entre InnoDB et MyISAM, la première étape consiste à déterminer si vous avez besoin des fonctionnalités fournies par InnoDB. Si ce n'est pas le cas, MyISAM doit être pris en compte.
Une discussion plus détaillée des différences est plutôt peu pratique (dans ce forum) en l'absence d'une discussion plus détaillée de l'espace du problème ... comment l'application utilisera la base de données, combien de tables, taille des tables, charge de transaction, volumes de select , insertion, mises à jour, conditions d’accès simultané, 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 en tant que système de gestion de base de données relationnelle, puis la sélection d'un moteur de stockage pour chaque table.
MYISAM:
INNODB: