Lecture de MySQL Guide Officiel
Publi� le 4 mai 2007

Chapitre 14 - Les tables MyISAM

Le format de table MyISAM est le format de stockage par défaut de MySQL [1]. C'est un format qui est optimisé en lecture. Il gère seulement le vérouillage de table contrairement au format Berkeley DB (BDB) qui gère le verrouillage de page et InnoDB qui intervient au niveau des lignes. Par ailleurs, contrairement à InnoDB, MyISAM n'implémente pas les transactions respectant le paradigme ACID. Il permet le stockage des bases de données sur des disques voire des serveurs différents [2] (sauf sous Windows). MyISAM autorise le stockage en lecture seule et la compression des données (lecture seule) grâce au programme client myisampack.

MyISAM utilise différentes extensions de fichiers stockés dans le répertoire data de mysql :

-  .frm : structure de la table
-  .MYD : données
-  .MYI : index

Ce format est très souple. Il existe un nombre incroyable de manières d'exporter les données. Par exemple, on peut se contenter d'un copier/coller du répertoire de la base de donnée pour que cela fonctionne sur un autre serveur (même sous un autre OS) sans autre mesure.

Le format MERGE est une extension de MyISAM et permet le découpage d'une table dans la mesure où elle dépasse les limites du système d'exploitation. Il était possible d'utiliser des fichiers en mode RAID [3] mais ce mode a été abandonné.

Pour optimiser les insertions multiples, la commande LOCK TABLE vérouille explicitement les tables souhaitées. Ensuite on effectue les insertions et pour finir on libère le verrou qui a pour effet de purger les index. L'option DELAYED de la commande INSERT améliore les accès concurrentiels.

Le format MyISAM a un autre avantage au niveau des insertions. Si la table ne contient pas de "trous" [4], les données sont insérées à la fin de la table, de sorte que, il est possible, en même temps, de lire et d'écrire des données. Les "trous" sont supprimés grâce à la commande OPTIMIZE TABLE.

Chapitre 15 - Tables InnoDB

Le format InnoDB a été développé par un partenaire de la société MySQL AB aujourd'hui racheté par l'éditeur mondial Oracle. C'est pourquoi MySQL développe aujourd'hui son propre moteur transactionnel.

Ce moteur est compatible ACID à 100% (atomicité, cohérence, isolation, durabilité). En outre il supporte les clés étrangères et l'intégrité référentielle. MySQL permet le passage du format MyISAM et InnoDB à tout moment.


mysql> ALTER TABLE t TYPE=InnoDB

InnoDB diffère fondamentalement de MyISAM selon les aspects suivants :

-  InnoDB utilise son propre espace de tables [5] pour les données et les index ainsi que des fichiers de journaux. La structure des tables reste quant à elle, stockée dans les fichiers .frm.

On en est à la page 527.

Pages 1 | 2 | 3 | 4 | 5


[1] Il ne peut être désactivé.

[2] Par exemple, pour une grande table fortement sollicité en écriture, on peut la stocker sur un disque SCSI par exemple.

[3] Plusieurs petits fichiers de taille identique.

[4] Résultant de la suppression de lignes.

[5] Equivalent à un table space sous Oracle.