Blog Navicat

Choisir le bon moteur de stockage pour les tables MySQL 5 Janvier 2024 par Robert Gravelle

MySQL, l'un des systèmes de gestion de bases de données relationnelles les plus populaires. Il propose une variété de moteurs de stockage, chacun conçu pour répondre à des besoins et à des cas d'utilisation spécifiques. Lorsqu'il s'agit d'optimiser les performances de votre base de données et de garantir l'intégrité des données, la sélection du bon moteur de stockage est cruciale. Dans le blog d'aujourd'hui, nous explorerons les facteurs clés à prendre en compte lors du choix d'un moteur de stockage pour vos tables MySQL.

Comprendre les moteurs de stockage

MySQL prend en charge plusieurs moteurs de stockage, chacun avec son propre ensemble de fonctionnalités, de forces et de faiblesses. Le moteur de stockage est responsable de la gestion du stockage, de la récupération et de la gestion des données dans les tables de la base de données. Bien qu'InnoDB et MyISAM soient de loin les moteurs les plus couramment utilisés, il en existe plusieurs autres à prendre en compte.

Tenez compte de vos modèles d'utilisation

La première étape dans le choix d’un moteur de stockage consiste à comprendre vos modèles d’utilisation spécifiques. Différents moteurs de stockage sont optimisés pour différents scénarios. Les choix incluent :

  • InnoDB: Il s'agit du moteur de stockage par défaut pour MySQL et convient parfaitement aux applications avec des charges de travail et des transactions à forte intensité d'écriture. InnoDB assure la conformité ACID, garantissant la cohérence et la fiabilité des données.
  • MyISAM: Si votre application comporte des opérations plus gourmandes en lecture et ne nécessite pas de transactions, MyISAM peut être un bon choix. Il fonctionne bien pour des scénarios tels que l'entreposage de données et les rapports nécessitant beaucoup de lecture.
  • MRG_MyISAM: Un moteur de stockage qui vous permet de créer des tables de données fusionnées. Ces tables constituent une collection d'autres tables MyISAM. Utile pour gérer de grands ensembles de données répartis sur plusieurs tables.
  • MEMORY: Ce moteur de stockage stocke toutes les données dans la RAM, ce qui le rend idéal pour les scénarios où un accès rapide aux données est essentiel. Cependant, il est important de noter que les données stockées dans le moteur MEMORY sont volatiles et ne persistent pas lors des redémarrages du serveur.
  • Blackhole: Agit comme un « trou noir » où les données sont acceptées mais non stockées. Utile pour les scénarios dans lesquels vous souhaitez répliquer des données sur d'autres serveurs sans les stocker localement.
  • CSV: Stocke les données dans des fichiers texte au format CSV. Convient à l'échange de données entre des bases de données et des applications utilisant des fichiers CSV.
  • Performance_Schema: Un moteur de stockage qui fournit des informations relatives aux performances sur l'exécution du serveur au moment de l'exécution. Utile pour surveiller et optimiser les performances.
  • ARCHIVE: Ce moteur est optimisé pour stocker de grandes quantités de données avec un minimum d'espace requis. Il convient aux fins d'archivage pour lesquelles la récupération rapide des données n'est pas une préoccupation majeure.

Comparaison d'InnoDB à MyISAM

InnoDB et MyISAM sont les moteurs de stockage les plus populaires. Prenons ici un moment pour examiner les forces et les faiblesses de chacun en termes de capacités transactionnelles, d'intégrité des données, de fiabilité et de performances.

Si votre application implique des transactions complexes et nécessite des fonctionnalités telles que des restaurations et des points de sauvegarde, InnoDB est un candidat sérieux. Il offre une conformité ACID totale, garantissant que les transactions sont traitées de manière fiable. En revanche, si votre application ne repose pas beaucoup sur les transactions et peut tolérer des incohérences de données occasionnelles, un moteur de stockage comme MyISAM peut être plus adapté. MyISAM ne prend pas en charge les transactions dans la même mesure qu'InnoDB, mais il peut bien fonctionner pour les charges de travail lourdes en lecture.

Pour les applications où l'intégrité des données est primordiale, InnoDB est souvent le choix préféré. InnoDB utilise un index clusterisé et prend en charge les contraintes de clé étrangère, garantissant l'intégrité référentielle entre les tables. Ceci est crucial pour les applications où le maintien de la cohérence des données est une priorité absolue. Si votre application peut tolérer un niveau inférieur d'intégrité des données, MyISAM peut être envisagé. MyISAM ne prend pas en charge les contraintes de clé étrangère et est plus sujet à la corruption au niveau des tables en cas de crash. Il est donc essentiel de peser les compromis entre performances et fiabilité des données.

Les performances sont un facteur essentiel dans le choix d’un moteur de stockage. InnoDB est connu pour ses excellentes performances dans les scénarios à forte écriture grâce à sa prise en charge du contrôle de concurrence multiversion (MVCC). Il utilise le verrouillage au niveau des lignes, réduisant ainsi les conflits et permettant une meilleure concurrence. MyISAM, en revanche, excelle dans les charges de travail gourmandes en lecture. Il utilise le verrouillage au niveau de la table, ce qui peut avoir un impact sur la concurrence dans les scénarios d'écriture intensive, mais permet des opérations de lecture plus rapides.

Sélection d'un moteur de stockage dans Navicat

Étant donné que chaque table peut avoir son propre moteur de stockage dans MySQL, Navicat l'affiche dans l'explorateur d'objets de table, ainsi que d'autres informations pertinentes, telles que la dernière valeur d'incrémentation automatique, la date de la dernière modification, la longueur des données et le nombre de lignes :

Navicat_table_properties (132K)

Pour définir ou modifier le moteur de stockage d'une table, ouvrez le Concepteur de tables et cliquez sur l'onglet Options. Vous y trouverez une liste déroulante des moteurs pris en charge ainsi qu'un certain nombre d'autres champs pertinents :

storage_engines_in_navicat (38K)

Différents moteurs de stockage ont leurs propres attributs, les autres options configurables dépendent donc du moteur que vous choisissez. Par exemple, voici les champs du moteur InnoDB :

InnoDB_engine_properties (62K)

Vous verrez que MEMORY Engine offre moins d’options de configuration :

Memory_engine_properties (45K)

Conclusion

La sélection du moteur de stockage approprié pour vos tables MySQL est une décision critique qui a un impact direct sur les performances, la fiabilité et l'évolutivité de votre application. En examinant attentivement vos modèles d'utilisation, vos exigences transactionnelles, vos besoins en matière d'intégrité des données, vos considérations en matière de performances et en explorant des moteurs de stockage spécialisés, vous pouvez prendre une décision éclairée qui correspond aux objectifs de votre organisation.

Partager
Archives du blog