16 Tables InnoDB
Manuel de Référence MySQL 4.1 : Version Française
. Présentation des tables InnoDB . Informations de contact InnoDB . InnoDB avec MySQL version 3.23 . Configuration InnoDB . Options de démarrage InnoDB . Créer des bases InnoDB . Créer des tables InnoDB . Ajouter et retirer des données et des logs InnoDB . Sauver et restaurer une base InnoDB . Transférer une base de données InnoDB vers une autre machine . InnoDB Transaction Model and Locking . Conseils pour l'amélioration des performances InnoDB . Implémentation du multi-versionnage . Structures de tables et d'index . Gestion de l'espace fichiers et des entrées/sorties disque . Gestion des erreurs InnoDB ->Restrictions sur les tables InnoDB . Résolution de problèmes avec InnoDB
|
16.17 Restrictions sur les tables InnoDB
-
Les tables InnoDB ne supportent pas les index en texte plein.
-
Sous Windows, InnoDB stocke les noms de bases de données et les noms
de tables en interne, et en minuscule. Pour passer une base au format
binaire de Unix à Windows, ou le contraire, vous devez créer toutes
vos bases et tables en minuscules.
-
TRUNCATE table_name
ne remet à zéro aucun compteur
AUTO_INCREMENT
.
-
Attention
:
NE convertissez PAS
un système de tables
MyISAM en InnoDB! Cela n'est pas supporté. Si vous faîtes cela,
MySQL ne va pas redémarrer jusqu'à ce que vous restauriez vos données
avec une vieille sauvegarde, ou que vous regénériez ces tables
avec le script
mysql_install_db
.
-
SHOW TABLE STATUS
ne donne pas de statistiques précises sur les
tables InnoDB, hormis pour la taille physique réservée. Le nombre de lignes
est seulement une approximation utilisée en optimisation SQL.
-
Si vous essayez de créer un index unique sur un préfixe d'une colonne,
vous allez obtenir une erreur :
CREATE TABLE T (A CHAR(20), B INT, UNIQUE (A(5))) TYPE = InnoDB;
|
Si vous créez un index non-unique sur un préfixe de colonne, InnoDB va
créer un index pour toute la colonne.
-
INSERT DELAYED
n'est pas supportés par les tables InnoDB.
-
La commande MySQL
LOCK TABLES
ne reconnait pas le verrouillage de ligne
InnoDB réalisé dans les commandes SQL achevées : cela signifie que vous
pouvez poser un verrou sur une table même si il existe une transaction
qui a été posée par un autre utilisateur. Par conséquent, votre opération
doit attendre que les autres tables soient libres, et elle peut aussi
entrer en conflit avec une autre requête. De plus, un blocage de verrous
est possible mais il ne met pas en danger l'intégrité des transactions,
car le verrou de ligne posé par InnoDB se charge toujours de l'intégrité.
Enfin, un verrou de table évite aux autre transactions de poser un verrou
de ligne (en conflit avec le mode de verrous) sur la table.
-
Une table ne peut pas contenir plus de 1000 colonnes.
-
DELETE FROM TABLE
ne regénère pas la table, mais au lieu de cela,
il efface les lignes une à une, ce qui est bien plus lent. Dans les prochaines
versions, MySQL va pouvoir utiliser la commande
TRUNCATE
qui est très
rapide.
-
La taille de page par défaut est de InnoDB est de 16 ko. En recompilant
le code, vous pouvez lui changer la valeur de 8 ko à 64 ko. La taille maximale
de ligne est légèrement inférieure à la moitié de la taille d'une page
de base dans les versions inférieure à 3.23.40 de InnoDB. Depuis la versions
source 3.23.41 BLOB et TEXT sont autorisé à être plus petits que 4 Go,
la taille totale de ligne doit aussi être de moins de 4 Go.
InnoDB ne stocke par les fichiers dont le taille est inférieure à
128 octets dans une page séparée. Après que InnoDB a modifié la ligne
en stockant les grandes colonnes dans une page séparée, le reste de la taille
de la chaîen doit être plus petite que la moitiée de la page de base. La taille
maximale de clé est de 7000 octets.
-
Sur certains systèmes d'exploitation, le fichier de données est limité à
2 Go. La taille combinée des fichiers de log doit être inférieure à
4 Go.
-
La taille maximale d'un espace de tables est de 4 milliards de pages. C'est
aussi la taille maximale pour une table. La taille minimale pour une
table est de 10 Mo.
-
Lorsque vous redémarrez le serveur MySQL, InnoDB peut réutiliser une vieille
valeur pour une colonne
AUTO_INCREMENT
.
-
Vous ne pouvez pas donner la première valeur d'une colonne
AUTO_INCREMENT
avec
CREATE TABLE ... AUTO_INCREMENT=...
(ou
ALTER TABLE ...
). Pour donner cette valeur, insérez une
ligne avec la valeur que vous souhaitez moins 1, puis effacez cette ligne.
|