EDIT : article désormais sur le wiki
Il existe un superbe script Perl permettant de recevoir des conseils sur l'optimisation de sa base MySQL : mysqltuner.pl.
La dernière fois que je l'ai lancé, il m'a gentiment dit que j'avais 4 tables fragmentées, ce qui est mauvais pour les performances et que je devais utiliser OPTIMIZE TABLE
pour régler ce problème.
Soit. Mais sur quelles tables lancer cette commande ?
Ce n'est pas compliqué. Il suffit de lancer, dans le prompt MySQL [1]:
USE information_schema;
SELECT TABLE_SCHEMA,TABLE_NAME FROM TABLES WHERE TABLE_SCHEMA NOT IN ("information_schema","mysql") AND Data_free > 0;
Voilà. Après cela, il ne reste plus qu'à lancer
OPTIMIZE TABLE nom_de_la_table;
sur chacune des tables renvoyées par la commande précédente.
[1] : commande trouvée sur http://blog.barfoo.org/2008/09/19/defragmenting-all-fragmented-myisam-tables/
Hello
Il y a aussi la commande shell
mysqlcheck --optimize --all-databases
Elle s’occupe de chercher elle même les tables qui ont besoin d’être optimisées et exécute un OPTIMIZE TABLE dessus.
Cool ! C’est vrai que c’est plus simple.
Après, encore faut-il avoir un accès SSH et pas juste une console SQL.