137 votes

Quand utiliser MyISAM et InnoDB ?

MyISAM est conçu dans l'idée que votre base de données est interrogée bien plus souvent qu'elle n'est mise à jour et, par conséquent, il effectue 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 et dispose de fonctions de validation, de retour en arrière et de récupération en cas de panne pour protéger les données des utilisateurs. Il prend en charge la tolérance aux transactions et aux pannes.

Les différences ci-dessus sont correctes entre MyISAM et InnobDB ? Veuillez m'indiquer si d'autres limitations existent pour MYISAM et InnobDB. Quand dois-je utiliser MyiSAM ou Innodb ? Merci !

237voto

Tony Stark Points 3050

Lire la suite Moteurs de stockage .

MyISAM :

Le site MyISAM dans MySQL.

  • Plus simple à concevoir et à créer, donc plus adapté aux débutants. Aucun souci concernant les relations étrangères entre les tables.
  • Plus rapide qu'InnoDB dans l'ensemble en raison de la structure plus simple, donc beaucoup moins de coûts pour les ressources du serveur. -- En général, ce n'est plus vrai.
  • Indexation en texte intégral. -- InnoDB l'a maintenant
  • Particulièrement bon pour les tables (select) à lecture intensive. -- En général, ce n'est plus vrai.
  • L'empreinte sur le disque est de 2 à 3 fois inférieure à celle d'InnoDB. -- Depuis la version 5.7, c'est peut-être le seul véritable avantage de MyISAM.

InnoDB :

Le site InnoDB dans MySQL.

  • Soutien aux transactions (qui vous permet de bénéficier du soutien de l ACID propriété).
  • Verrouillage au niveau des rangées. Le fait de disposer d'un mécanisme de verrouillage plus fin permet d'obtenir une meilleure concurrence que, par exemple, le verrouillage au niveau des rangées, MyISAM .
  • Contraintes de clé étrangère. Elles vous permettent 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 des tables que MyISAM.
  • Prise en charge d'un grand pool de tampons pour les données et les index. Le tampon de clé MyISAM est uniquement pour les index.
  • MyISAM stagne ; toutes les améliorations futures seront apportées à InnoDB. Cela a été clairement exprimé lors du déploiement de la version 8.0.

Limites de MyISAM :

  • Pas de clés étrangères et de suppressions/mises à jour en cascade
  • Pas d'intégrité transactionnelle (conformité ACID)
  • Pas de possibilité de retour en arrière
  • 4,284,867,296 row limit (2^32) -- C'est vieux par défaut . La limite configurable (pour de nombreuses versions) était de 2**56 octets.
  • Maximum de 64 index par table

InnoDB Limitations :

  • Pas d'indexation plein texte (version mysql inférieure à 5.6)
  • Ne peut pas être compressé pour une lecture rapide, 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 - Une comparaison des avantages et des inconvénients pour et contre
  2. Moteurs MySQL : MyISAM vs. InnoDB
  3. Quelles sont les principales différences entre InnoDB et MyISAM ?
  4. MyISAM contre InnoDB
  5. Quelle est la différence entre MyISAM et InnoDB ?
  6. MySql : MyISAM vs. Inno DB !

20voto

Argeman Points 969

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

Personnellement, je n'utiliserais plus du tout MyISAM. Choisissez InnoDB et ajoutez un peu de matériel si vous avez besoin de plus de performances. Une autre idée est de regarder les systèmes de base de données avec plus de fonctionnalités comme PostgreSQL, le cas échéant.

EDIT : Pour les performances de lecture, ce lien montre qu'innoDB est souvent en réalité no plus lent que MyISAM : https://www.percona.com/blog/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/

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