[MySQL] MyISAM ou InnoDB ?

Toutes les informations du forum
Répondre
admin
Administrateur du site
Messages : 27
Enregistré le : sam. 2 août 2025 13:29

[MySQL] MyISAM ou InnoDB ?

Message par admin »

MySQL enregistre par défaut les informations avec le moteur de stockage MyISAM, mais il en existe d’autres incluant InnoDB (le plus connu), ISAM, Heap, NBD, Berkeley DB ou encore Merge. Le choix d’un moteur de stockage est important et les différents parfois méconnue.

MyISAM

Avantages
Voici une liste non-exhaustive d’arguments en faveurs de MyISAM :
  • Système de stockage par défaut de MySQL. Ce type de stockage est le plus ancien disponible avec MySQL
  • Très rapide pour effectuer des requêtes SELECT ou INSERT
  • Supporte l’indexation plein texte (cf. index full text). Offre de bien meilleure performance lors d’une recherche sur des champs de textes
  • Administration plus simple
  • Possibilité de verrouiller au niveau d’une table (cf. table lock)
  • Plus souple au niveau de l’intégrité des données (mais ça peut avoir son revers de la médaille …)
Inconvénients
La souplesse de MyISAM entraîne quelques points négatifs lorsqu’il s’agit de garder une bonne intégrité des données, comme le montre les points ci-dessous:
  • Pas de transactions
  • Pas de clés étrangères
  • Plus difficile de récupérer après un crash. L’intégrité des données peut facilement être compromise
Si vous souhaitez passer une table à MyISAM il suffit simplement d’exécuter cette requête SQL:

code : Tout sélectionner

ALTER TABLE `table` ENGINE=MYISAM;

InnoDB

Avantages
Les principaux avantages d’utiliser InnoDB concerne la possibilité de bien gérer l’intégrité des données, même lors d’un crash du serveur.
  • Gère les transactions (ensemble de requêtes regroupées) tel que BEGIN, COMMIT, ROLLBACK …
  • Gère les clés étrangères et les contraintes d’intégrité
  • Support de ACID pour s’assurer que tous les enregistrements sont réussi ou échoué. Risque d’erreur impossible, même lors d’une panne
  • Système de récupération lors d’un crash grâce à un système de relecture des logs
Inconvénients
Toutefois, l’intégrité des données complique l’administration d’une base de données.
  • Plus strict concernant l’intégrité des données
  • Ne supporte pas l’indexation plein texte (cf. index full text)
  • Administration un peu plus complexe
  • Moteur de stockage plus imposant. Il demande plus de ressources et est plus lent
  • Possibilité de verrouiller au niveau d’une ligne (cf. row lock) pour insérer ou mettre à jour un enregistrement
  • Intéressant de noter que c’est plus récent, même si ce n’est pas forcément un inconvénient
Pour passer une table à InnoDB il suffit de lancer la requête suivante:

code : Tout sélectionner

ALTER TABLE `table` ENGINE=InnoDB;

MyISAM : à privilégier lorsqu’il est surtout nécessaire d’effectuer des requêtes pour lire ou insérer des données. Pour des sites web, c’est souvent la solution recommandée.
InnoDB : à privilégier pour les systèmes qui ne doivent pas comporter d’erreurs et qui nécessite des clés étrangères. Pour une application gérant des données importantes, tel une application bancaire, cela peut se révéler le moteur de stcokage recommandé.
Répondre