Optimiser d'un coup toutes les tables d'une base de données MySQL

Classé dans : Bases de données | 3 commentaires

mercredi 21 avril 2010

L'optimisation d'une base de données MySQL permet de réorganiser les index et de vérifier que les tables ne comportent pas d'erreur.

Auparavant, nous utilisions un script php qui listait les tables (SHOW TABLES) et effectuait les optimisations une par une (OPTIMIZE TABLE ..., ANALYZE TABLE ...) mais ce script était long et monopolisait une bonne partie des ressources serveurs.

Il existe pourtant une commande fort pratique qui permet d'optimiser en une seule fois et très rapidement toutes les tables de vos bases de données MySQL :

mysqlcheck -u <utilisateur> -p --auto-repair --check --optimize --all-databases

L'utilisateur doit avoir les droits SELECT et INSERT au minimum (cf doc MySQL sur les commandes CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, OPTIMIZE TABLE).

Vous pouvez le créer avec la commande suivante :
 

CREATE USER 'croncheck'@'localhost' IDENTIFIED BY '<mot de passe>';
GRANT SELECT ,INSERT ON * . * TO 'croncheck'@'localhost' IDENTIFIED BY '<mot de passe>';


Commentaires

Le 02 avril 2011 g a dit :

Comment la mettre dans un script PHP? Merci de l'info

Le 20 juillet 2012 Sined a dit :

Pour le faire en PHP, je dirai un truc de ce genre :

exec ("mysqlcheck -u <utilisateur> -p --auto-repair --check --optimize --all-databases")

Le 20 juillet 2012 Sined a dit :

Pour repondre a la question du dessus, je dirai qu'il faudrait utiliser la fonction exec().

Fil RSS des commentaires de cet article