Syntaxe des commandes SQL
<<<
Types de tables MySQL Tables InnoDB
>>>

 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 to MySQL Cluster
Introduction à MaxDB
Données spatiales avec MySQL
Procédures stockées et fonctions
API 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
Index des commandes, types et fonctions SQL
Index conceptuel

15 Types de tables MySQL

MySQL suppporte 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é. 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.

Ce chpatire décrit les différents moteurs de tables MySQL, hormis InnoDB , qui est présenté dans le chapitre et NDBCluster qui est présenté dans le chapitre .

When you create a new table, you can tell MySQL what type of table to create by adding an ENGINE or TYPE table option to the CREATE TABLE statement:

CREATE TABLE t (i INT) ENGINE = INNODB;
CREATE TABLE t (i INT) TYPE = MEMORY;
ENGINE is the preferred term, but cannot be used before MySQL 4.0.18. TYPE is available beginning with MySQL 3.23.0, the first version of MySQL for which multiple storage engines were available.If you omit the ENGINE or TYPE option, the default table type is usually MyISAM . This can be changed by setting the table_type system variable.

To convert a table from one type to another, use an ALTER TABLE statement that indicates the new type:


ALTER TABLE t ENGINE = MYISAM;
ALTER TABLE t TYPE = BDB;
See Syntaxe de CREATE TABLE and Syntaxe de ALTER TABLE .

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.

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 sotcké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 permanants)
  • Gère mieux les accès concurrents si la table recoit 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. .

Avantages des tables non-transactionnelles (NTST) :

  • 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 transavctions.
  • Utilisent moins de mémoires pour les mises à jour.

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é.

Sommaire :

<< Types de tables MySQL >>
Syntaxe des commandes SQL Manuel de Référence MySQL 4.1 : Version Française Tables InnoDB