La particularité de MySQL est de proposer plusieurs moteurs de stockage dans une même base de données. Sans entrer dans les détails je vais vous faire une brève présentation de quelques uns de ces moteurs actuels en détaillant un peu leurs particularités, tout cela afin de comprendre quand et pourquoi utiliser tel ou tel moteur de stockage. Car ces moteurs ont des spécificités bien particulières qui ont même entrainées des idées reçues pendant un temps.
MyIsam : le plus répandu
Des avantages ...
MyIsam est le moteur par défaut de MySQL, si jusqu'à présent la notion de moteur de stockage vous était inconnue, c'est surement ce moteur là que vous utilisez depuis vos début avec MySQL. Ce moteur est très populaire car il est très simple d'utilisation (pour un débutant) et offre de très bonnes performances sur des tables très fréquemment ouvertes en lecture-écriture.
Son autre point fort est de proposer un index FULL-TEXT, qui permet de faire des recherche assez précises (en comparaison avec LIKE) sur des colonnes de texte et qui permet donc à chacun d'avoir un petit moteur de recherche, notamment grâce à un tri par pertinence.
...et des inconvénients
Pour rester sur l'index FULL-TEXT, celui souffre néanmoins sur les grosses tables, de plus sa configuration (taille des mots notamment) n'est accessible que sur un serveur dédié.
Mais les 2 plus gros défauts du moteur MyIsam est qu'il ne supporte ni les clefs étrangères, ni les transactions (qui font l'objet de ce tutoriel). C'est d'ailleurs la forte présence de ce moteur (de plus proposé par défaut) qui fait croire à certains que MySQL ne gère pas les transactions. C'est faux, mais il faut pour cela utiliser un moteur de stockage qui les supporte : InnoDB.
InnoDB : un moteur pour des bases robustes
Contrairement à MyIsam, InnoDB est un moteur qu'on utilise pour ses fonctionnalités qui en font le moteur le plus utilisé dans les secteurs sensibles, c'est-à-dire nécessitant une cohérence et une grande intégrité des données (finances, jeux en ligne, architecture complexe très sollicitée, etc ...).
Ses deux grands points forts sont sa gestion des
clefs étrangères et son support des transactions (ah je sens un regain d'intérêt petit lecteur

). Ces mécanismes transactionnels présentent une grande compatibilité aux critères
ACID.
Concernant ses défauts : outre le fait d'avoir des tables plus volumineuses (en moyenne 25% plus grosses) et de ne pas proposer d'index FULL-TEXT, InnoDB est légèrement plus lent dans les opérations, mais cela est dû aux tests d'intégrité (les clef étrangères et les transactions) qui permettent de garder une base cohérente.
C'est donc ce moteur de stockage que nous allons utiliser pour la suite de ce tutoriel.
Memory (Heap) : tout dans la Ram
Comme son nom l'indique, ce moteur de stockage stocke les données de la table en mémoire, la structure quand à elle est stockée dans un fichier. Son principal intérêt est sa rapidité d'accès, très utile pour une table très fortement sollicitée. Le problème c'est qu'en cas d'arrêt du serveur, toutes les données stockées sont supprimées (puisque stockée dans la Ram qui se vide lors de l'arrêt du courant).
Il faut donc utiliser ce moteur de stockage pour des données qui ne sont pas indispensables au fonctionnement d'un site tel qu'un compteur de visiteur ou un système de chat (sauf si vous voulez garder une trace des discussions).
Des moteurs de stockage pour MySQL, il y en a pleins d'autres mais les principaux sont là, passons sans plus attendre à la pratique.