MySQL et les tables fragmentées

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/

2 réflexions au sujet de “MySQL et les tables fragmentées”

  1. 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.

Les commentaires sont fermés.