2010-05-12 6 views
15

Lorsque j'exécute l'optimisation de la table sur une table innodb, je reçois ce message à la place. cela signifie-t-il que la table a déjà été optimisée, mais d'une manière différente?Optimisation de la table innodb

"table | optimiser | note | La table ne supporte pas l'optimisation, faire recréer + analyser |"

Répondre

22

De l'documentation:

Pour les tables InnoDB, OPTIMIZE TABLE est mis en correspondance avec ALTER TABLE, qui reconstitue la table pour mettre à jour les statistiques de l'index et l'espace inutilisé libre dans l'index cluster. Depuis MySQL 5.1.27, il est affiché dans la sortie de OPTIMIZE TABLE lorsque vous l'exécutez sur une table InnoDB, comme indiqué ici:

mysql> OPTIMIZE TABLE foo; 
+----------+----------+----------+----------------------------------------------------------- 
| Table | Op  | Msg_type | Msg_text              
+----------+----------+----------+-----------------------------------------------------------  
| test.foo | optimize | note  | Table does not support optimize, doing recreate + analyze ... 
| test.foo | optimize | status | OK                
+----------+----------+----------+----------------------------------------------------------- 

Vous pouvez faire le travail OPTIMIZE TABLE sur d'autres moteurs de stockage en démarrant mysqld avec l'option --skip-new ou --safe-mode. Dans ce cas, OPTIMIZE TABLE est simplement mappé à ALTER TABLE.

+2

Mieux vaut tard que jamais. :) –

3

La syntaxe à optimize la table est

OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE 
tbl_name [, tbl_name] ... 

Utilisez OPTIMIZE TABLE dans ces cas, en fonction du type de table:

  • Après avoir fait insérer substantielle, mettre à jour ou de suppression sur un InnoDB table qui a son propre fichier .ibd car il a été créé avec l'option innodb_file_per_table activée. La table et les index sont réorganisés et l'espace disque peut être récupéré pour être utilisé par le système d'exploitation.
  • Après avoir supprimé une grande partie d'une table MyISAM ou ARCHIVE, ou apporté de nombreuses modifications à une table MyISAM ou ARCHIVE avec des lignes de longueur variable (tables contenant des colonnes VARCHAR, VARBINARY, BLOB ou TEXT). Les lignes supprimées sont conservées dans une liste chaînée et les opérations INSERT suivantes réutilisent les anciennes positions de ligne. Vous pouvez utiliser OPTIMIZE TABLE pour récupérer l'espace inutilisé et pour défragmenter le fichier de données. Après de nombreuses modifications apportées à une table, cette instruction peut également améliorer les performances des instructions qui utilisent la table, parfois de manière significative.
Questions connexes