MySql: MyISAM vs Inno DB!

Quelles sont les différences entre les types MyISAM et Inno DB dans MySQL?

La principale différence est que InnoDB prend en charge les transactions, contrairement à MyISAM.

Il existe de nombreuses autres différences, mais les plus courantes sont les suivantes:

  • MyISAM a généralement été considéré comme plus rapide lors de la recherche, mais les améliorations récentes apscopes à InnoDB éliminent cette différence et améliorent les performances de la charge de travail simultanée élevée
  • Transactions de support InnoDB tandis que MyISAM ne le fait pas
  • InnoDB prend en charge l’intégrité référentielle alors que MyISAM ne
  • InnoDB gère les index un peu différemment, stockant la clé primaire dans chaque index (la création d’index prend plus de place sur le disque, mais rend également un index de couverture plus probable)
  • MyISAM effectue le locking au niveau de la table, tandis qu’InnoDB peut effectuer le locking au niveau des lignes
  • Différents parameters de mémoire / tampon / index sont utilisés dans les fichiers de configuration MySQL.
  • InnoDB est généralement dit pour avoir une meilleure reprise sur incident
  • Comme mentionné dans une autre réponse, les données sont stockées différemment sur le disque. Je crois qu’InnoDB est configurable dans ce domaine et peut avoir un fichier par table, si nécessaire

Je suis sûr qu’une recherche sur Google ou sur le site MySQL fera apparaître de nombreuses autres différences plus en détail.

InnoDB et MyISAM

Caractéristiques et comparaison des performances:

  1. InnoDB est plus récent lorsque MyISAM est plus ancien.
  2. InnoDB est plus complexe alors que MyISAM est plus simple.
  3. InnoDB est plus ssortingct en matière d’intégrité des données lorsque MyISAM est lâche.
  4. InnoDB implémente le locking au niveau des lignes pour l’insertion et la mise à jour pendant que MyISAM implémente le locking au niveau de la table.
  5. InnoDB a des transactions alors que MyISAM ne le fait pas.
  6. InnoDB a des clés étrangères et des contraintes relationnelles, contrairement à MyISAM.
  7. InnoDB a une meilleure reprise sur incident alors que MyISAM ne parvient pas à récupérer l’intégrité des données en cas de panne du système.
  8. MyISAM possède un index de recherche en texte intégral, contrairement à InnoDB.

À la lumière de ces différences, InnoDB et MyISAM ont leurs avantages et leurs inconvénients uniques. Chacun d’entre eux est plus approprié dans certains scénarios que l’autre.

Avantages d’InnoDB

  1. InnoDB doit être utilisé lorsque l’intégrité des données est une priorité car elle les prend en charge de manière inhérente à l’aide de contraintes et de transactions.
  2. Plus rapide dans les tables à écriture intensive (insertions, mises à jour) car il utilise le locking au niveau de la ligne et ne retient que les modifications apscopes à la même ligne insérée ou mise à jour.

Inconvénients d’InnoDB

  1. Comme InnoDB doit prendre en charge les différentes relations entre les tables, l’administrateur de firebase database et les créateurs de schéma doivent prendre plus de temps pour concevoir des modèles de données plus complexes que ceux de MyISAM.
  2. Consum plus de ressources système telles que la RAM. En fait, il est recommandé que beaucoup de moteurs InnoDB soient désactivés s’il n’ya pas de besoin substantiel après l’installation de MySQL.
  3. Pas d’indexation en texte intégral.

Avantages de MyISAM

  1. Plus simple à concevoir et à créer, donc mieux pour les débutants. Pas de soucis concernant les relations étrangères entre les tables.
  2. Plus rapide que InnoDB dans son ensemble en raison de la structure plus simple, donc beaucoup moins de coûts de ressources de serveur.
  3. Indexation en texte intégral
  4. Particulièrement utile pour les tables à lecture intensive (sélection).

Inconvénients de MyISAM

  1. Aucune vérification de l’intégrité des données (par exemple, des contraintes de relation), ce qui entraîne une responsabilité et une surcharge pour les administrateurs de firebase database et les développeurs d’applications.
  2. Ne prend pas en charge les transactions qui sont essentielles dans les applications de données critiques telles que celles des services bancaires.
  3. Plus lent que InnoDB pour les tables fréquemment insérées ou mises à jour, car la table entière est verrouillée pour toute insertion ou mise à jour.

La comparaison est assez simple. InnoDB est plus adapté aux situations critiques de données qui nécessitent des insertions et mises à jour fréquentes. MyISAM, quant à lui, fonctionne mieux avec des applications qui ne dépendent pas tout à fait de l’intégrité des données. Il suffit surtout de sélectionner et d’afficher les données.

Référence: Comparaison InnoDB et MyISAM

Vous pouvez également le consulter ici pour plus de détails: MyISAM ou InnoDB MySQL engine?

J’espère que cela t’aides.

MyISAM prend en charge l’indexation de texte intégral (non-SQL standard) qu’InnoDB n’a toujours pas. C’est la seule raison pour laquelle nous utilisons MyISAM aujourd’hui.

La différence la plus importante entre MyISAM et InnoDB est que InnoDB prend en charge les transactions et les clés étrangères. Si vous avez besoin de clés étrangères et de fonctionnalités associées (par exemple, des suppressions en cascade automatiques), vous devrez utiliser InnoDB.

InnoDB est plus lent que MyISAM pour la plupart des utilisations, mais peut fonctionner plus rapidement dans certaines conditions grâce à un meilleur mécanisme de locking; MyISAM verrouille toute la table pour la lecture pendant l’exécution des insertions / mises à jour. InnoDB peut effectuer un locking au niveau des lignes, permettant ainsi plusieurs écritures simultanées et lisant sur la table.

Vous pouvez avoir plus d’informations sur MyISAM & InnoDB dans la documentation MySQL:

http://dev.mysql.com/doc/refman/5.1/en/myisam-storage-engine.html

http://dev.mysql.com/doc/refman/5.1/en/innodb-overview.html

La principale différence est qu’InnoDB prend en charge les transactions , contrairement à MyISAM.

MyISAM et InnoDB stockent également leurs données sur disque différemment. MyISAM utilise un fichier de données et un fichier d’index pour chaque table, stockés dans un répertoire nommé d’après la firebase database. InnoDB semble regrouper tout dans un fichier appelé ibdata1.

Support NFS

Contrairement à MyISAM, InnoDB peut avoir des problèmes sur NFS.

De la configuration d’InnoDB (MySQL version 5.5)

Mise en garde

Si la fiabilité est une considération pour vos données, ne configurez pas InnoDB pour utiliser des fichiers de données ou des fichiers journaux sur des volumes NFS. Les problèmes potentiels varient selon le système d’exploitation et la version de NFS, et incluent des problèmes tels que le manque de protection contre les écritures en conflit et les limitations de la taille maximale des fichiers.

Fonctionnalités d’InnoDB 1. Fournit une capacité de transaction complète avec une conformité totale ACID (Atomicity, Consistency, Isolation et Durability).

  1. Il a le locking de niveau de ligne. En supportant le locking de niveau de ligne, vous pouvez append des données à une table InnoDB sans que le moteur ne verrouille la table avec chaque insert, ce qui accélère la récupération et le stockage des informations dans la firebase database.

  2. La clé du système InnoDB est une structure de firebase database, de mise en cache et d’indexation dans laquelle les index et les données sont mis en mémoire cache et stockés sur disque. Cela permet une récupération très rapide et fonctionne même sur de très grands ensembles de données.

  3. InnoDB prend en charge les contraintes de clés étrangères

  4. InnoDB prend en charge la récupération automatique en cas d’accident
  5. InnoDB supporte la compression de table (lecture / écriture)
  6. InnoDB supporte les types de données spatiales (pas d’index spatial)

  7. Innodb prend en charge ANALYZE TABLE non verrouillable et n’est requirejs que lorsque le serveur fonctionne depuis longtemps, car il plonge dans les statistiques d’index et obtient les informations d’index lorsque la table s’ouvre.

  8. Innodb n’a pas de fichiers d’index séparés, il n’est donc pas nécessaire de les ouvrir.

  9. Innodb construit ses index une ligne à la fois en ordre de clé primaire (après un ALTER), ce qui signifie que les arborescences d’index ne sont pas construites dans un ordre optimal et fragmentées. Il n’existe actuellement aucun moyen de défragmenter les index InnoDB. indexe en sortingant dans MySQL 5.0. Même la suppression et la recréation des index InnoDB peuvent entraîner la fragmentation des index, en fonction des données.

  10. Une table peut contenir un maximum de 1000 colonnes.

  11. La longueur maximale de la clé interne d’InnoDB est de 3500 octets, mais MySQL lui-même limite ce nombre à 3072 octets. (1024 octets pour les versions non 64 bits avant MySQL 5.0.17 et pour toutes les versions antérieures à la version 5.0.15.)

  12. La taille de page par défaut de la firebase database dans InnoDB est de 16 Ko. En recompilant le code, vous pouvez définir des valeurs allant de 8 Ko à 64 Ko. Vous devez mettre à jour les valeurs de UNIV_PAGE_SIZE et UNIV_PAGE_SIZE_SHIFT dans le fichier source univ.i.
  13. Les tables InnoDB ne supportent pas les index FULLTEXT.

    Caractéristiques MYISAM

    1. Pas de support de transaction
    2. Verrouillage au niveau de la table
    3. Fournit une recherche en texte intégral
    4. Aucune limite aux données dans le tableau.
    5. COUNT (*) s rapide (lorsque WHERE, GROUP BY ou JOIN n’est pas utilisé)
    6. indexation en texte intégral
    7. encombrement réduit du disque
    8. compression de table très élevée (lecture seule)
    9. types de données spatiales et index (R-tree)
  14. En utilisant DATA DIRECTORY = ‘/ path / to / data / directory’ ou INDEX DIRECTORY = ‘/ path / to / index / directory’, vous pouvez spécifier où le moteur de stockage MyISAM doit placer le fichier de données et le fichier d’index d’une table. Le répertoire doit être le nom de chemin complet du répertoire et non un chemin relatif.

vous pouvez trouver plus de détails à http://faisalbhagat.blogspot.com/2014/09/innodb-vs-myisam.html

Voici une description des différences entre InnoDB et MyIsam:

Différences entre InnoDB et MyIsam

Quelques différences:

  • MYISAM ne supporte aucune transaction de firebase database,
  • INNODB fournira des transactions
  • MYISAM fournit un locking au niveau de la table,
  • INNODB fournit un locking de niveau de ligne
  • INNOBD supporte les clés étrangères, MYISAM ne …

MyISAM est plus pratique en matière de sauvegarde, car il est assez simple de simplement verrouiller toutes les tables et de copier les fichiers directement dans le système de fichiers. (mysqlhotcopy qui est un script perl fait même partie de mysql afaik)

InnoDB est un peu plus complexe et la copie des fichiers ne suffit pas, car ils ne peuvent pas être restaurés sur une autre machine prête à l’emploi.

Cependant, il existe des logiciels commerciaux qui proposent la recopie d’InnoDB.

Bien que le support des transactions soit la principale différence, le locking au niveau de la table peut poser problème si vous avez des requêtes SELECT de longue durée associées à des instructions UPDATE .