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

MySQL ALTER TABLE sur une très grande table - est-il sûr de l'exécuter ?

Comme je viens de le lire, le ALTER TABLE ... ORDER BY ... query est utile pour améliorer les performances dans certains scénarios. Je suis surpris que l'indice PK n'aide pas à cela. Mais, à partir de la documentation MySQL , il semble qu'InnoDB fait utiliser l'indice. Cependant, InnoDB a tendance à être plus lent que MyISAM. Cela dit, avec InnoDB, vous n'auriez pas besoin de réorganiser la table, mais vous perdriez la vitesse fulgurante de MyISAM. Cela peut toujours valoir le coup.

La façon dont vous expliquez les problèmes, il semble qu'il y ait trop de données chargées en mémoire (peut-être y a-t-il même un échange en cours ?). Vous pouvez facilement vérifier cela en surveillant votre utilisation de la mémoire. C'est difficile à dire car je ne connais pas très bien MySQL.

D'un autre côté, je pense que votre problème se situe à un endroit très différent :vous utilisez une machine avec seulement 512 Mo de RAM comme serveur de base de données avec une table contenant plus de 4 Mio de lignes... Et vous effectuez une opération très gourmande en mémoire. opération sur l'ensemble de la table sur cette machine. Il semble que 512 Megs ne seront pas suffisants pour cela.

Un problème beaucoup plus fondamental que je vois ici :vous effectuez du développement (et très probablement des tests également) dans un environnement très différent de l'environnement de production. Le genre de problème que vous expliquez est prévisible. Votre machine de développement dispose de six fois plus de mémoire que votre machine de production. Je crois pouvoir dire en toute sécurité que le processeur est également beaucoup plus rapide. Dans ce cas, je vous propose de créer une machine virtuelle imitant votre site de production. De cette façon, vous pouvez facilement tester votre projet sans perturber le site de production.