| Manuel de Référence MySQL 4.1 : Version Française
 
 . Informations générales
 . Installer MySQL
 . Tutoriels d'introduction
 . Utiliser les programmes MySQL
 . Administration du serveur
 . Réplication de MySQL
 . Optimisation de MySQL
 . MySQL Scripts clients et utilitaires
 . Référence du langage MySQL
 . Structure du langage
 . Jeux de caractères et Unicode
 . Types de colonnes
 . Fonctions à utiliser dans les clauses SELECT et WHERE
 . Syntaxe des commandes SQL
 ->Types de tables MySQL
 . Tables InnoDB
 . Introduction à MySQL Cluster
 . Introduction à MaxDB
 . Données spatiales avec MySQL
 . Procédures stockées et fonctions
 . API MySQL
 . Pilotes MySQL
 . Gestion des erreurs avec MySQL
 . Etendre MySQL
 . Problèmes et erreurs communes
 . Crédits
 . Historique des changements MySQL
 . Port vers d'autres systèmes
 . Variables d'environnement
 . Expressions régulières MySQL
 . Licence Publique Générale GNU
 . Exception de licence MySQL FLOSS
 . Index des commandes, types et fonctions SQL
 . Index conceptuel
 
 
 | 
  15 Types de tables MySQL 
                     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. 
Ce chapitre décrit les différents moteurs de tables MySQL, hormis
 
InnoDB
 , qui est présenté dans le chapitre  Le moteur de tables 
InnoDB
  et 
 
NDBCluster
  qui est présenté dans le chapitre  Introduction à MySQL Cluster .
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é. Il est abandonné et ne doit plus être utilisé.
depuis MySQL 4.1, et il sera supprimé en MySQL 5.0.
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
  identique 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 nommé  
MEMORY
 .
Les moteurs  
InnoDB
  et  
BDB
  gèrent des tables transactionnelles,
et ont été introduits en MySQL 3.23. Les deux font partie de la distribution
source de MySQL 3.23.34a.
 
BDB
  est inclus dans les distributions MySQL-Max pour les systèmes d'exploitation
qui le supporte.  
InnoDB
  est aussi inclus dans les distributions binaires MySQL-Max
de MySQL 3.23.  Depuis MySQL 4.0,  
InnoDB
  est inclus par défaut dans toutes les
distributions binaires. Dans les distributions source, vous pouvez l'activer
ou pas en configurant la compilation.
NDBCluster
  est le moteur de stockage de MySQL MySQL Cluster qui implémente
des tables réparties sur plusieurs serveurs. Il est disponible avec les distributions
source depuis MySQL 4.1.2.
 
Lorsque vous créez une table, vous pouvez indiquer à MySQL le type de
table avec la clause  
ENGINE
  ou  
TYPE
  lors de la commande de
 
CREATE TABLE
  :
 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.| 
CREATE TABLE t (i INT) ENGINE = INNODB;CREATE TABLE t (i INT) TYPE = MEMORY;
 | 
 
Si vous omettez l'option  
ENGINE
  ou  
TYPE
 ,
le type de table par défaut sera utilisé. C'est généralement  
MyISAM
 .
Cela peut être changé en modifiant la variable système  
table_type
 .
Pour convertir une table d'un type à l'autre, utilisez la commande 
 
ALTER TABLE
 , pour indiquer le nouveau type : See  
CREATE TABLE
 Syntax  and
 
ALTER TABLE
 Syntax .
Si vous essayez d'utiliser un moteur de stockage qui n'est pas compilé ou
qui est désactivé, MySQL créera une table de type  
MyISAM
 . Ce comportement
est pratique pour copier des tables entre serveurs MySQL qui supportent différents
moteurs. Par exemple, dans une architecture de réplication, votre serveur maître
supporte des tables transactionnelles, mais l'esclave n'utilise que des tables
non-transactionnelles, pour améliorer la vitesse.| 
ALTER TABLE t ENGINE = MYISAM;ALTER TABLE t TYPE = BDB;
 | 
 
Cette substitution automatique par une table de type  
MyISAM
  pour un
type de moteur indisponible peut être gênant pour un nouvel utilisateur
MySQL. En MySQL 4.1 et plus récent, une alerte est générée lorsque le type de
la table est modifié. 
MySQL crée toujours un fichier  
.frm
  pour stocker le type de la table et
les informations de définition. Les données et les index de la table peuvent 
être stockés ailleurs, en fonction du type de tables. Le serveur crée le fichier 
 
.frm
  par dessus le moteur de stockage. Les moteurs peuvent créer des fichiers
supplémentaires, en fonction de leurs besoins. 
Les avantages des tables transactionnelles (TST) sont :
 
Plus sûr. Même si MySQL crashe ou que vous avez un problème matériel,
vous pouvez récupérer vos données, soit par un recouvrement
automatique, soit à partir d'une sauvegarde combinée avec le log des
transactions.
Vous pouvez combiner plusieurs commandes et les accepter toutes d'un
seul coup avec la commande  
COMMIT
 .
Vous pouvez utiliser  
ROLLBACK
  pour ignorer vos modifications
(si vous n'êtes pas en mode auto-commit).
Si une mise à jour échoue, tout vos changements seront annulés. (Avec
les tables NTST tous les changements opérés sont permanents)
Gère mieux les accès concurrents si la table reçoit simultanément plusieurs
lectures.
 
Notez que pour utiliser le moteur  
InnoDB
  en MySQL 3.23, vous devez
configurer au moins l'option de démarrage  
innodb_data_file_path
 .
En 4.0 et plus récent,  
InnoDB
  utilise les valeurs par défaut de la configuration,
si vous ne les spécifiez pas.
 Configuration 
InnoDB
 .
Avantages des tables non-transactionnelles (NTST) : 
Vous pouvez combiner les tables TST et NTST dans la même requête pour
obtenir le meilleur des deux types. Cependant, dans une transaction sans auto-validation,
les modifications à une table non-transactionnelles seront toujours immédiatement
enregistrés, et ne pourront pas être annulé.
Plus rapides puisqu'il n'y a pas de traitement des transactions.
Utilisent moins d'espace disque puisqu'il n'y a pas de traitement des transactions.
Utilisent moins de mémoires pour les mises à jour.
 Sommaire : |