MySQL et les tables frag­men­tées

EDIT : article désor­mais sur le wiki

Il existe un superbe script Perl permet­tant de rece­voir des conseils sur l’op­ti­mi­sa­tion de sa base MySQL : mysql­tu­ner.pl.

La dernière fois que je l’ai lancé, il m’a genti­ment dit que j’avais 4 tables frag­men­tées, ce qui est mauvais pour les perfor­mances et que je devais utili­ser 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 trou­vée sur http://blog.barfoo.org/2008/09/19/defrag­men­ting-all-frag­men­ted-myisam-tables/

2 réflexions au sujet de “MySQL et les tables frag­men­té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.