Comment utiliser les transactions de InnoDB avec différentes API <<< |
Convertir des tables MyISAM vers InnoDB | Comment les colonnes AUTO_INCREMENT fonctionnent avec InnoDB >>> |
16.7 Créer des tables InnoDB 16 Tables InnoDB Manuel de Référence MySQL 4.1 : Version Française . Comment utiliser les transactions de InnoDB avec différentes API ->Convertir des tables MyISAM vers InnoDB . Comment les colonnes AUTO_INCREMENT fonctionnent avec InnoDB . Contraintes de clés étrangères FOREIGN KEY . InnoDB et la réplication MySQL . Multiple tablespaces - putting each table into its own .ibd file |
16.7.2 Convertir des tables MyISAM vers InnoDBInnoDB n'a pas d'optimisation particulière pour séparer la création d'index. Par conséquent, cela ne sert à rien d'exporter et de réimporter les données de la table pour créer les index après. Le moyen le plus rapide pour mettre la table au format InnoDB est d'insérer directement les lignes dans une table InnoDB, c'est à dire, utiliser ALTER TABLE ... TYPE=INNODB , ou créer un table InnoDB vide, avec la même définition et de faire l'insertion de toutes les lignes avec INSERT INTO ... SELECT * FROM ... . Pour avoir un meilleur contrôle sur le processus d'insertion, il est mieu de faire les insertions des grosses tables par blocs :
Durant la conversion des grosses tables, vous pouvez donner à InnoDB un gros buffer pour réduire les accès disques. Ne le portez pas au dela de 80% de votre mémoire physique. Donnez aussi de gros fichiers de logs, et un buffer de log important. Assurez vous que vous n'allez pas manquer d'espace : les tables InnoDB prennent beaucoup plus d'espace que les tables MyISAM. Si la commande ALTER TABLE manque d'espace, elle va lancer une annulation, et cela peut prendre des heures sur un disque plein. Durant les insertions, InnoDB utiliser un buffer d'insertion pour rassembler les lignes d'index secondaires avec les index, en groupe. Cela économise beaucoup d'accès disques. Durant l'annulation, ce mécanisme n'est pas utilisé, et elle peut prendre jusqu'à 30 fois plus de temps.Dans le cas d'un annulation immensément longue, si vous n'avez pas de données critiques dans votre base, il est mieux de tuer le processus, d'effacer toutes les tables et les fichiers de logs, ainsi que le fichier de table InnoDB .frm , et de recommencer, plutôt que d'attendre la fin de l'annulation. |
<< | Convertir des tables MyISAM vers InnoDB | >> |
Comment utiliser les transactions de InnoDB avec différentes API | Créer des tables InnoDB | Comment les colonnes AUTO_INCREMENT fonctionnent avec InnoDB |