Les types de table ont été introduit à partir de MySQL 3.23!
Lors de la création d'une table, vous pouvez préciser à MySQL quel type de table utiliser. MySQL va, dans tous les cas, créer un fichier .frm pour y noter la structure de la table, et les définitions des colonnes. Suivant le type de table, l'index et les données seront enregistrées dans d'autres fichiers.
Vous pouvez convertir des tables d'un type à l'autre avec la commande ALTER TABLE. Reportez vous à la section ALTER TABLE.
ISAM Ce type est le type original de pour les tables MySQL. Il utilise un index B-tree. L'index est enregistré dans un fichier avec l'extension.ISM et les données sont enregistrées dans un fichier avec l'extension .ISD. Vous pouvez vérifier et réparer les tables ISAM avec l'utilitaire isamchk. Reportez vous à la section 13.4 Utiliser isamchk pour réparer une table. Les tables ISAM ne are sont pas portables d'une plate forme à l'autre. Les fichiers ISAM ont les caractéristiques suivantes :@:
MyISAM est le type de table par défaut à partir de MySQL 3.23. Il est basé sur le code de ISAM et dispose de nombreuses amélioration :@: L'index est desormais enregistré dans le fichier .MYI et les données sont enregistrées dans le fichier .MYD. Vous pouvez vérifier et réparer des fichiers MyISAM avec l'utilitaire myisamchk. 13.4 Utiliser isamchk pour réparer une table. Les caractéristiques suivantes sont nouvelles:
MyISAM est donc indépendant de la machine et de l'OS.
AUTO_INCREMENT. MyISAM va automatiquement mettre à jour ces colonnes lors des commandes INSERT/UPDATE. Les commandes AUTO_INCREMENT peuvent être modifiée avec myisamchk. Tout ceci accélère les traitements sur les colonnes AUTO_INCREMENT et les anciens numéros ne seront par réutilisé.
myisamchk.
MyISAM indique si le fichier a bien été fermé ou non. Cela permettra bientôt de faire des réparation automatiques.
myisamchk marque les tables.. myisamchk --fast ne vérifiera que les talbes qui ne sont pas marquées.
myisamchk -a crée des statistiques sur les parties de clés (et non plus la totalité des clés, comme avec NISAM).
myisampack (appelé pack_isam sous NISAM) comrpess les colonnes BLOB et VARCHAR
MyISAM supporte les caractéristiques suivantes, que MySQL sera bientôt capable d'exploiter :@:
BLOB et TEXT peuvent être indexées/
VARCHAR :@: Les colonnes de type VARCHAR commence par une longueur enregistré sur 2octets.
VARCHAR peut avoir des enregistrements de longueur variable ou fixes.
VARCHAR et CHAR peuvent atteindre la taille de 64Ko. Tous les segments de clés on leur propres définitions. Cela permettra à MySQL d'utiliser des langages différents pour chaque colonne.
NULL sont autorisés dans les colonnes indexées. Cela prend de 0 à 1 octet par clé.
UNIQUE; Cela va permettre d'avoir l'attribut UNIQUE pour n'importe quelle combinaison de colonne d'une table. (On ne pourra pas faire de recherche sur ces index).
HEAP Ces tables utilisent un index hashé est sont enregistrées en mémoire. Cela les rend beaucoup plus rapide, mais si MySQL crashe, toutes les données seront perdues. HEAP est un bon type pour les tables temporaire !
CREATE TABLE test TYPE=HEAP SELECT ip,SUM(downloads) as down FROM log_table GROUP BY ip; SELECT COUNT(ip),AVG(down) from test; drop table test;
Voici quelques considérations sur les tables HEAP:@:
MAX_ROWS) dans la commande CREATE pour s'assurer que la table ne prend pas toute la mémoire.
= et <=> (mais TRES rapide )
HEAP est une table à enregistrement de taille fixe.
HEAP n'accepte pas les types BLOB/TEXT.
AUTO_INCREMENT.
NULL.
HEAP (ce qui n'est pas le cas des tables hashées normales)
HEAP sont partagées entre tous les clients (comme n'importe quelle table)
HEAP sont allouées par petits blocs. Ces tables sont purement dynamiques en insertion. Pas de dépassement de capacité, ni d'espace de clé supplémentaires à prévoir. Les lignes effacées sont placées dans une liste, et seront réutilisées à la prochaine insertion.
DELETE FROM heap_table ou DROP TABLE heap_table.
HEAP est limitée à max_heap_table_size.