Je suis prêt à passer de MyISAM à InnoDB mais je voulais savoir s'il y avait une liste complète de choses à rechercher? Par exemple, je n'ai vu aucune liste mentionner que l'exécution DISABLE KEYS
sur une table InnoDB enverra un avertissement, à l'exception de la page de manuel pour ALTER TABLE
. C'est ce genre de chose que je dois savoir avant de convertir. Je pensais que je serais d'accord avec mes requêtes mais apparemment pas.
11
Je pense que le plus gros problème serait que innodb est transactionnel. Vous voudrez savoir si les bibliothèques MySQL utilisées par vos applications auto_commit par défaut ou non.
Python , par exemple, ne se valide pas automatiquement. Cela signifie que si une application insérait une ligne juste avant de fermer sa connexion, l'insertion serait désormais annulée après la modification de innodb. Le script python par exemple devrait être sûr d'appeler connection.commit ();
Un autre point de différence pourrait être autour des insertions ou des mises à jour sur plusieurs lignes. Envisagez une seule insertion à plusieurs lignes
Considérez ce qui se passe s'il y a une sorte d'erreur telle qu'une collision de clés unique sur row3. Avec MyISAM, les deux premières lignes auraient été écrites, sous innodb, toutes les lignes en cours d'écriture seraient annulées, ne laissant rien d'écrit même après une telle erreur.
Avec innodb, vous entrerez dans le monde des impasses. Ceux-ci ne sont pas intrinsèquement mauvais, sauf s'ils surviennent à une telle fréquence pour empêcher tout travail d'être effectué. Cependant, vos applications devront être codées de telle manière qu'elles anticipent les blocages et les gèrent de manière appropriée (ce qui signifie très probablement simplement réessayer).
Tenez compte des limitations de mémoire / stockage. Innodb consomme beaucoup plus de ressources que MyISAM. Si vous avez suffisamment de RAM pour garder vos pools de mémoire tampon suffisamment grands pour accueillir toutes vos tables, vous êtes en or.
Recherchez les tables qui ont de grandes clés primaires. L'indexation en cluster d'Innodb signifie que chaque index secondaire contient une autre copie du PK de la ligne correspondante. Si vous avez 2 index secondaires, cela signifie que chaque ligne PK est stockée 3 fois (PK + chaque index). Si le pk s'étend sur plusieurs colonnes et types de données volumineux (char (N) par exemple), vous pouvez voir comment les exigences d'index peuvent exploser rapidement sous innodb.
la source