Gestion des erreurs InnoDB
<<<
Restrictions sur les tables InnoDB Résolution de problèmes avec InnoDB
>>>

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.

<< Restrictions sur les tables InnoDB >>
Gestion des erreurs InnoDB Tables InnoDB Résolution de problèmes avec InnoDB