Quelle est la différence entre MyISAM et InnoDB ?

Novembre 2012

MySQL propose de nombreux moteurs pour gérer les tables. Les deux principaux moteurs sont MyISAM, et InnoDB.

MyISAM est le moteur historique de MySQL, il est d'ailleurs utilisé par défaut. Ce moteur est rapide tant en lecture qu'en écriture, et il est très bien intégré à MySQL, les différents outils fournis avec MySQL comme mysqldump pour faire des backups ou encore la réplication de serveur (master/slave) gèrent parfaitement les tables MySQL.

Mais ce moteur ne gère pas les relations, c'est-à-dire qu'on ne peut pas définir de contrainte d'intégrité référentielle (clé étrangère/foreign key). Cela signifie qu'une application mal conçue utilisant des tables MyISAM peut corrompre les données, car le système ne va pas vérifier la cohérence des données à chaque transaction.

InnoDB est apparu par la suite, la plus importante différence avec MyISAM c'est qu'InnoDB est un moteur relationnel : il permet de créer des contraintes d'intégrité, tout comme d'autres SGBD comme PostgreSQL, SQL Server ou Oracle.

À première vue on pourrait se dire qu'il vaut mieux utiliser InnoDB que MyISAM, mais en réalité le choix n'est pas aussi simple, il y a quelques points importants à connaitre avant de se décider :

Performance

MyISAM et InnoDB ont sensiblement la même performance en lecture, par contre en écriture, InnoDB est plus lent que MyISAM. De plus, les données stockées avec InnoDB occupent plus de place sur le disque que MyISAM.

Fonctionnalités

Même si MyISAM ne gère pas les relations, il y a aussi des fonctionnalités qu'il est le seul à proposer, comme les index Fulltext. Les index fulltext est un type d'index particulier qui sert à indexer du contenu texte et ainsi pouvoir faire des recherches à base de mots clés.

Cette fonction est très utile pour réaliser un moteur de recherche sur un site internet, choisir InnoDB vous prive immédiatement de cette fonction.

Maintenance / Administration

Comme dit plus haut, les nombreux outils fournis avec MySQL gèrent sans problème les tables MyISAM, ainsi les backups sont faciles et rapides à faire, la synchronisation entre plusieurs serveurs MySQL est elle aussi plus facile à faire avec MyISAM.

Ces opérations sont beaucoup plus lentes avec InnoDB.

Configuration

MyISAM fonctionne bien avec les réglages par défaut, par contre utiliser InnoDB sans l'avoir configuré en fonction de son utilisation auparavant peut donner de très mauvaises performances.

Donc il vaut mieux avoir une bonne connaissance d'InnoDB avant de commencer à l'utiliser dans des projets.

Après avoir lu calculer la différence entre 2 dates avec excel vous en saurez d'avantage sur ce sujet.

Les autres moteurs MySQL

À côté de MyISAM et InnoDB, on trouve toute une série d'autres moteurs qui ont des applications bien spécifiques. Voici une liste des différents moteurs MySQL :

MEMORY stocke les données non pas dans des fichiers sur le disque dur du serveur MySQL, mais dans la mémoire RAM. Cela permet un gain très important de performance, mais en contrepartie il n'y a pas de persistance des données (quand on arrête le serveur MySQL, on perd toutes les données contenues dans les tables MEMORY. Ce moteur peut être utilisé pour stocker les utilisateurs connectés à un site internet par exemple (ces informations sont par nature éphémères, donc on a pas besoin de persistance).

BLACKHOLE est comme son nom l'indique un trou noir. C'est une sorte de puits sans fond, rien de tout ce que vous écrirez dans une table blackhole ne sera stocké. À première vue cela n'a aucun intérêt, mais on peut s'en servir pour faire des tests (benchmarks...)

CSV enregistre les données dans des fichiers CSV (fichier texte avec chaque colonne séparée par un point virgule (;), lisible dans un tableur comme Excel.

ARCHIVE est spécialement conçu pour enregistrer des données qui ne changent pas, et pour optimiser le stockage en compressant les données de la table. On ne peut faire que des INSERT et des SELECT sur une table archive, pas d'UPDATE. Ce moteur est en général utilisé pour stocker des logs (journaux).

MERGE (aka MRG_MyISAM) est très proche de MyISAM, sauf qu'il permet de stocker une table dans plusieurs fichiers différents. Cela permet d'améliorer les performances sur de très grosses tables, et de compresser les données anciennes (sur lesquels il n'y aura plus d'écriture) avec myisampack.

Découvrez ce tutoriel photoshop : portrait en texte à lire tout de suite !

0 commentaire
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré