MySQL possède une commande OPTIMIZE TABLE qui peut être utilisée pour récupérer l'espace inutilisé dans une installation MySQL. Existe-t-il un moyen (commande intégrée ou procédure stockée commune) d’exécuter cette optimisation pour chaque table de la base de données et/ou de l’installation du serveur, ou est-ce quelque chose que vous devez écrire vous-même ?
Vous pouvez utiliser [mysqlcheck
][1] pour le faire en ligne de commande.
Une base de données :
mysqlcheck -o <db_schema_name>
Toutes les bases de données :
mysqlcheck -o --all-databases
[1] : http://dev.mysql.com/doc/refman/5.0/en/mysqlcheck.html
L'exemple de script php suivant peut vous aider à optimiser toutes les tables de votre base de données.
<?php
dbConnect();
$alltables = mysql_query("SHOW TABLES");
while ($table = mysql_fetch_assoc($alltables))
{
foreach ($table as $db => $tablename)
{
mysql_query("OPTIMIZE TABLE '".$tablename."'")
or die(mysql_error());
}
}
?>
L'administrateur MySQL (qui fait partie des outils GUI de MySQL) peut le faire pour vous au niveau de la base de données.
Il suffit de sélectionner votre schéma et de cliquer sur le bouton "Maintenance" dans le coin inférieur droit.
Depuis que les outils GUI ont atteint leur statut de fin de vie, ils sont difficiles à trouver sur la page mysql. Je les ai trouvés via Google : http://dev.mysql.com/downloads/gui-tools/5.0.html
Je ne sais pas si le nouveau MySQL Workbench peut faire cela aussi.
Vous pouvez également utiliser l'outil de ligne de commande mysqlcheck
qui devrait être capable de le faire.