web-dev-qa-db-fra.com

Quand utiliser MyISAM et InnoDB?

MyISAM est conçu avec l'idée que votre base de données est interrogée bien plus que sa mise à jour et, par conséquent, elle exécute des opérations de lecture très rapides. Si votre ratio lecture/écriture (insertion | mise à jour) est inférieur à 15%, il est préférable d'utiliser MyISAM.

InnoDB utilise le verrouillage au niveau de la ligne, ainsi que des fonctionnalités de validation, d'annulation et de reprise sur incident pour protéger les données des utilisateurs. Il supporte les transactions et la tolérance aux pannes

les différences ci-dessus sont-elles correctes entre MyISAM et InnobDB? veuillez indiquer si d'autres limitations existent pour MYISAM et InnobDB. Quand devrais-je utiliser MyiSAM ou quand Innodb? Merci!

125
ajay

Lisez à propos de Moteurs de stockage .

MyISAM:

Le moteur de stockage MyISAM dans MySQL.

  • Plus simple à concevoir et à créer, donc mieux pour les débutants. Ne vous inquiétez pas des relations étrangères entre les tables.
  • Plus rapide qu'InnoDB dans l'ensemble grâce à une structure plus simple et donc beaucoup moins onéreuse en ressources de serveur. - Surtout plus vrai.
  • Indexation de texte intégral. - InnoDB l'a maintenant
  • Particulièrement bon pour les tables de lecture intensive (select). - Surtout plus vrai.
  • L'encombrement du disque est 2 à 3 fois inférieur à celui d'InnoDB. - Depuis la version 5.7, c'est peut-être le seul avantage réel de MyISAM.

InnoDB:

Le moteur de stockage InnoDB dans MySQL.

  • Prise en charge des transactions (prise en charge de la propriété ACID ).
  • Verrouillage au niveau de la ligne. Avoir un mécanisme de verrouillage à grain plus fin vous donne une plus grande concurrence que, par exemple, MyISAM .
  • Contraintes de clé étrangère. Vous permettant de laisser la base de données assurer l'intégrité de l'état de la base de données et des relations entre les tables.
  • InnoDB est plus résistant à la corruption de table que MyISAM.
  • Prise en charge d'un pool de mémoire tampon important pour les données et les index. Le tampon de clé MyISAM ne concerne que les index.
  • MyISAM est stagnant; toutes les améliorations futures seront dans InnoDB. Cela a été clairement expliqué lors du lancement de la version 8.0.

Limitations de MyISAM:

  • Aucune clé étrangère et suppressions/mises à jour en cascade
  • Pas d'intégrité transactionnelle (conformité ACID)
  • Aucune capacité de retour en arrière
  • 4 284 867 296 lignes (2 ^ 32) - Il s’agit de l’ancien par défaut . La limite configurable (pour de nombreuses versions) est de 2 ** 56 octets.
  • Maximum de 64 index par table

Limitations InnoDB:

  • Pas d'indexation de texte intégral (version de MySQL inférieure à 5.6)
  • Ne peut pas être compressé rapidement, en lecture seule (5.5.14 introduit ROW_FORMAT=COMPRESSED)
  • Vous ne pouvez pas réparer une table InnoDB

Pour une brève compréhension, lisez les liens ci-dessous:

  1. Moteurs MySQL: InnoDB vs MyISAM - Comparaison des avantages et des inconvénients
  2. moteurs MySQL: MyISAM vs. InnoDB
  3. Quelles sont les principales différences entre InnoDB et MyISAM?
  4. MyISAM versus InnoDB
  5. Quelle est la différence entre MyISAM et InnoDB?
  6. MySql: MyISAM vs. Inno DB!
222
Tony Stark

Utilisez MyISAM pour des données très peu importantes ou si vous avez vraiment besoin de ces avantages en termes de performances minimales. Les performances de lecture ne sont pas meilleures dans tous les cas pour MyISAM.

Personnellement, je n’utiliserais plus MyISAM du tout. Choisissez InnoDB et lancez un peu plus de matériel si vous avez besoin de plus de performances. Une autre idée consiste à examiner les systèmes de base de données avec davantage de fonctionnalités telles que PostgreSQL, le cas échéant.

EDIT: pour la lecture-performance, ce lien montre qu'innoDB est souvent pas plus lent que MyISAM: http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/

19
Argeman