7.5 Tables InnoDB
7 Types de tables MySQL
Manuel de Référence MySQL 4.1 : Version Française
. Présentation des tables 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 . Modèle transactionnel de 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 ->Restrictions sur les tables InnoDB . Historique de l'évolution InnoDB . Informations de contact InnoDB
|
7.5.13 Restrictions sur les tables InnoDB
-
Attention
:
NE convertissez PAS
un système de tabel
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.
-
Vous ne pouvez pas avoir une clé sur une colonne de type
BLOB
et
TEXT
.
-
Une table ne peut pas recevoir 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 millions de pages. C'est
aussi la taille maximale pour une table. La taille minimale pour une
table est de 10 Mo.
|