[MySQL] MyISAM ou InnoDB ?
Message posté… : dim. 5 oct. 2025 21:32
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 :
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:
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.
Toutefois, l’intégrité des données complique l’administration d’une base de données.
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é.
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 …)
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
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
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
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é.