275 votes

Ce qui ' la différence entre les tables MyISAM et InnoDB ?

Je comprends que cette question a été posée avant, mais la plupart du temps, il est demandé par rapport à une base de données spécifique ou une table. Je ne trouve pas de réponse sur ce site qui décrit les deux moteurs et de leurs différences, sans respect pour quelqu'un à la base de données spécifique.

Je veux être en mesure de prendre des décisions plus éclairées à l'avenir à l'égard de la conception d'une table ou d'une base de données, donc je suis à la recherche d'une réponse globale sur les différences entre les deux moteurs de stockage.

Quelle est la différence entre MyISAM et InnoDB, et que dois-je être à la recherche d'lorsque vous essayez de décider entre l'un ou l'autre?

438voto

spencer7593 Points 29263

Les principales différences entre InnoDB et MyISAM ("à l'égard de la conception d'une table de base de données ou" vous m'avez demandé), le soutien aux "intégrité référentielle" et "transactions".

Si vous avez besoin de la base de données pour appliquer les contraintes de clé étrangère, ou vous avez besoin de la base de données à l'appui des opérations (par exemple les modifications faites 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) ensuite, vous choisissez 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, c'est la simultanéité. Avec MyISAM, une instruction DML permettra d'obtenir un verrou exclusif sur la table, et tandis que le verrou est maintenu, aucun autre session peut SÉLECTIONNER un ou une opération DML sur la table.

Ces deux moteurs vous m'avez demandé (InnoDB et MyISAM) ont différents objectifs de conception. MySQL a aussi d'autres moteurs de stockage, avec leurs propres objectifs de conception.

Donc, dans le choix 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'examen.

Une discussion plus détaillée des différences est assez peu pratique (dans ce forum) en l'absence d'une discussion plus détaillée de l'espace du problème... comment l'application va utiliser la base de données, combien de tableaux, la taille des tables, la charge des transactions, les volumes de select, insert, mises à jour, de la simultanéité des exigences, des fonctionnalités de réplication, etc.


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

360voto

medina Points 3052

MYISAM:

  1. MYISAM prend en charge au niveau de la Table de Verrouillage
  2. MyISAM conçu pour le besoin de vitesse
  3. MyISAM ne prend pas en charge les clés étrangères par conséquent, nous appelons à MySQL MYISAM est SGBD
  4. MyISAM stocke ses tables, des index et des données dans l'espace de disque à l'aide de séparer les trois fichiers différents. (tablename.FRM, tablename.MYD, tablename.MYI)
  5. MYISAM ne supporte pas de transaction. Vous ne pouvez pas commit et rollback avec MYISAM. Une fois que vous émettez une commande c'est fait.
  6. MYISAM prend en charge de recherche de texte intégral
  7. Vous pouvez utiliser MyISAM, si la table est plus statique avec beaucoup de sélectionner et de moins en moins de mise à jour et de suppression.

INNODB:

  1. InnoDB prend en charge le Verrouillage de Ligne
  2. InnoDB conçu pour un maximum de performances lors du traitement d'un volume élevé de données
  3. Support InnoDB clés étrangères par conséquent, nous appelons à MySQL InnoDB est SGBDR
  4. InnoDB stocke ses tables et index dans un tablespace
  5. InnoDB prend en charge les transactions. Vous pouvez commit et rollback avec InnoDB

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X