Quelle est la différence entre MyISAM et InnoDB?

Je comprends que cette question a déjà été posée, mais la plupart du temps, elle concerne une firebase database ou un tableau spécifique. Je ne trouve pas de réponse sur ce site qui décrit les deux moteurs et leurs différences sans respect pour la firebase database spécifique de quelqu’un.

Je souhaite pouvoir prendre des décisions plus éclairées à l’avenir en ce qui concerne la conception d’un tableau ou d’une firebase database. Je recherche donc une réponse complète aux différences entre les deux moteurs de stockage.

Quelle est la différence entre MyISAM et InnoDB , et que devrais-je rechercher en essayant de choisir 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 firebase database») sont la prise en charge de «l’intégrité référentielle» et des «transactions».

Si vous avez besoin de la firebase database pour appliquer des contraintes de clé étrangère ou si vous avez besoin de la firebase database pour prendre en charge les transactions (modifications apscopes par deux ou plusieurs opérations DML traitées comme une seule unité de travail vous choisirez alors 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 sera maintenu, aucune autre session ne pourra effectuer une opération SELECT ou DML sur la table.

Les deux moteurs spécifiques dont vous avez parlé (InnoDB et MyISAM) ont des objectives de conception différents. MySQL a également d’autres moteurs de stockage, avec leurs propres objectives 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 à l’étude.

Une discussion plus détaillée des différences est plutôt impraticable (dans ce forum) en l’absence d’une discussion plus détaillée de l’espace problème … comment l’application utilisera la firebase database, combien de tables, taille des tables, charge de transaction, volumes de sélection , insérer, mettre à jour, exigences de concurrence, fonctionnalités de réplication, etc.


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

MYISAM:

  1. MYISAM prend en charge le locking 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 on appelle MySQL avec MYISAM c’est le SGBD
  4. MyISAM stocke ses tables, données et index dans l’espace disque à l’aide de trois fichiers distincts. (nomtable.FRM, nomtable.MYD, nomtable.MYI)
  5. MYISAM ne prend pas en charge les transactions. Vous ne pouvez pas valider et annuler 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 select et less update et delete.

INNODB:

  1. InnoDB prend en charge le locking de niveau ligne
  2. InnoDB conçu pour des performances maximales lors du traitement de gros volumes de données
  3. InnoDB supporte les clés étrangères, nous appelons donc MySQL avec InnoDB, le SGBDR
  4. InnoDB stocke ses tables et index dans un tablespace
  5. InnoDB prend en charge les transactions. Vous pouvez valider et annuler avec InnoDB