Mysql
 sql >> Base de données >  >> RDS >> Mysql

Accélération de la conversion de MyISAM vers InnoDB

  • Définir un grand innodb_buffer_pool_size (2 Go ou plus)
  • pré-lisez vos anciens fichiers de données/index myisam à l'aide de commandes shell
  • augmenter innodb_log_file_size (256 Mo)
  • Faites la table alter dans X threads parallèles, où X est la quantité de cœurs de processeur sur votre serveur
  • autres ajustements mineurs pour la conversion uniquement (innodb_doublewrite=0, innodb_flush_log_at_trx_commit=0)

définir innodb_buffer_pool_size aussi haut que possible est le moyen typique d'accélérer la création de tables innodb - votre ensemble de données semble pouvoir tenir dans un pool de tampons innodb de 2 Go, donc tout serveur 64 bits décent devrait le permettre. alter table type=innodb est également plus rapide que la solution dump+reimport et est facile à exécuter en parallèle.

Assurez-vous également que vous avez augmenté le innodb_log_file_size de la valeur par défaut de 5 Mo à 128 ou 256 Mo. Faites attention avec cela, et il a besoin d'un arrêt propre + effacement de l'ancien ib_logfile*.

Si votre serveur a quelque chose comme 8 Go de RAM, et que vous exécutez une version 64 bits de mysql, je suggérerais un innodb_buffer_pool de 2 Go, et vous pouvez même pré-lire les anciens fichiers MYD et MYI avant de fermer pour temps d'arrêt, afin qu'ils soient dans le Cache de page du système d'exploitation lorsque le vrai travail commence.

Si vous optez également pour les modifications mineures, n'oubliez pas que vous devez les annuler après la conversion (un autre petit temps d'arrêt) pour sécuriser vos données, je doute cependant qu'elles en valent la peine pour un si petit ensemble de données.

Bonne chance.