Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelle est la différence entre MyISAM et InnoDB ?

Les principales différences entre InnoDB et MyISAM ("en ce qui concerne la conception d'une table ou d'une base de données" dont vous avez parlé) 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 si vous avez besoin de la base de données pour prendre en charge les transactions (c'est-à-dire les modifications apportées par deux ou plusieurs opérations DML traitées comme une seule unité de travail, avec toutes les modifications appliquées ou toutes les modifications annulées) alors vous choisirez le moteur InnoDB, puisque 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 pendant 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 dont vous avez parlé (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 ce n'est pas le cas, MyISAM est à considérer.

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, la taille des tables, la charge de transaction, les volumes de select , insertion, mises à jour, exigences de simultanéité, fonctionnalités de réplication, etc.

La conception logique de la base de données doit être centrée sur l'analyse des données et les besoins des utilisateurs ; le choix d'utiliser une base de données relationnelle viendra plus tard, et encore 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.