Aussi surprenant que cela peut paraitre, MySQL utilise une base MyISAM au lieu d'InnoDB pour ses tables systèmes critiques. Puisque MyISAM n'est pas conforme ACID, il y a des chances de perte de données et de corruptions lors de la modification d'objets systèmes tels que les privilèges. Morgan Tocker a annoncé que l'équipe MySQL avait l'intention d'utiliser InnoDB pour les tables systèmes.
MyISAM est le moteur originel de MySQL. Il est basé sur la technologie Indexed Sequential Access Method des mainframe IBM (ISAM). Puisqu'il ne supporte pas les transactions et son coût associé, MyISAM a tendance à être plus rapide que les autres moteurs de base de données. La contre partie est qu'il n'est pas conforme ACID et est sujet à des corruptions de données, spécifiquement lors de problèmes d'alimentation électrique.
La principale alternative à MyISAM est InnoDB qui a été créé par Innobase Oy. Puisqu’il supporte les transactions ACID et les clés étrangères en plus d'autres fonctionnalités, Oracle l'a choisi comme moteur par défaut depuis MySQL 5.5.
Les autres moteurs pour MySQL toujours en développement actif sont :
- Archive par Oracle
- Aria par Monty Program
- CONNECT par Monty Program
- CSV par Oracle
- NDB par Oracle
- InfiniDB par Calpont
- TokuDB par TokuTek
- XtraDB par Percona GPL
- FederatedX par Monty Program
- CassandraSE par Monty Program
- sequence par Monty Program
- mroonga par Monty Program
Alors que MySQL a prévu de supporter seulement InnoDB, le fork MariaDB a choisi d'être complètement agnostique.
À propos de la date de sortie, Morgan a écrit :
Le fonctionnement pour une version oblige à ce qu'une fonctionnalité soit stable avant d'être intégrée dans le tronc plutôt que de sortir des versions pour des fonctionnalités spécifiques. Donc, je ne veux pas trop m'avancer pour un travail qui vient tout juste de commencer. Bientôt :D