MySQL supporte plusieurs moteurs de stockage, qui gère différents types de tables.
Les moteurs de tables MySQL peuvent être transactionnels ou non-transactionnels.
Le moteur de tables originale était ISAM, qui gérait des tables non-transactionnelles.
Ce moteur a été remplacé par le moteur MyISAM et ne doit plus être utilisé.
En MySQL 3.23.0, les moteurs MyISAM et HEAP ont été introduits. MyISAM est une version améliorée de ISAM.
Le moteur HEAP propose des tables stockées en mémoire.
Le moteur MERGE a été ajouté en MySQL 3.23.25.
Il permet le regroupement de tables MyISAM identiques sous la forme d'une seule table.
Tous les trois moteurs sont non transactionnels, et sont tous inclus par défaut.
Notez que le moteur HEAP est maintenant appelé MEMORY.
Les moteurs InnoDB et BDB gèrent des tables transactionnelles, et ont été introduits en MySQL 3.23.
NDBCluster est le moteur de stockage du cluster MySQL qui implémente des tables réparties sur plusieurs serveurs.
Il est disponible avec les distributions source depuis MySQL 4.1.2.
Lorsque vous déclarer une table, vous pouvez, soit forcer le type ou par utiliser le type par défaut.
ENGINE est le terme recommandé, mais il ne peut pas être utilisé avant MySQL 4.0.18.
TYPE est disponible depuis MySQL 3.23.0, la première version de MySQL qui dispose de plusieurs moteurs de tables.
On peut définir le type par défaut depuis la version 3.23.0 dans le fichier my.cnf ou my.ini dans la section [mysqld] en ajoutant la ligne :default-table-type=innodb
MySQL crée un fichier .frm pour stocker les définitions de la table et ds colonnes.
Nous avons donc, les tables transactionnels (innoDB,BDB) et les tables non-transactionnels (MyISAM,HEAP,ISAM).
Avantage des tables transactionnels :
- Plus sûr.Sur un problème matériel, vous pouvez récupérer (par recouvrement automatique ou à partir d'une sauvegarde combinée).
- Vous pouvez combiner vos commandes et les lancer d'un coup avec la commande COMMIT.
- Vous pouvez utiliser le ROLLBACK pour ignorer vos modifications.
- Si vos mises à jour échoue,tous vos changements seront annulés.
Avantage des tables non-transactionnels :
- Plus rapide.
- Prennent moins d'espace.
- Utilisent moins de mémoire.