C'est un peu gênant si les administrateurs de la base de données doivent se connecter au serveur ou lancer le phpMyAdmin pour optimiser les bases de données une par une ou table par table manuellement. Parfois, l'administrateur de la base de données peut simplement oublier de faire le travail ou définir la fréquence d'optimisation à des moments moindres. Il est recommandé que toutes les tables des bases de données MySQL soient vérifiées au moins une fois par jour sur un serveur occupé.
Il est possible d'automatiser l'optimisation du processus MySQL en utilisant la fonction crontab sous Linux/Unix/CentOS/FreeBSD. Le travail cron pour vérifier et optimiser les bases de données MySQL peut être créé en utilisant l'utilitaire client mysqlcheck lors de l'installation de MySQL. Le client mysqlcheck peut vérifier, réparer, optimiser et analyser les tables de la base de données MySQL.
Pour créer une nouvelle tâche cron, connectez-vous au serveur en tant que root ou tout autre utilisateur, puis modifiez le fichier crontab (dans la plupart des systèmes d'exploitation, crontab -e ouvrira le fichier crontab dans l'éditeur de texte par défaut) pour ajouter la ligne de texte suivante. Pour les utilisateurs utilisant cPanel, cliquez sur "Cron job" où vous pouvez configurer crontab à des intervalles quotidiens, horaires et autres. Les webmasters expérimentés peuvent également configurer un fichier crontab dans rc.hourly ou rc.daily ou un autre répertoire cron. Notez que si vous vous connectez en tant qu'utilisateur MySQL ou normal sans privilèges d'accès à toutes les bases de données, il n'est pas possible d'optimiser toutes les bases de données, à moins que l'ID utilisateur et le mot de passe pour root ne soient spécifiés comme dans l'exemple ci-dessous.
0 1 * * * mysqlcheck -Aao --auto-repair -u root -p[password] > /dev/null
L'instruction ci-dessus a une syntaxe similaire à "mysqlcheck [options] -all-databases", où le paramètre -all-databases est l'action par défaut si aucune base de données n'est spécifiée et peut donc être omis. La commande exécutera le client mysqlcheck pour analyser et optimiser automatiquement toutes les bases de données à 1 h du matin tous les jours. Notez qu'il n'y a pas d'espace entre -p et votre mot de passe pour root. Vous pouvez modifier le temps d'exécution selon vos préférences et également modifier les options de la commande mysqlcheck. Si vous voulez juste vérifier et optimiser certaines bases de données ou certaines tables sans la base de données, utilisez la syntaxe suivante :
mysqlcheck [options] db_name [tables] mysqlcheck [options] --databases DB1 [DB2 DB3...]
Vous souhaiterez peut-être supprimer le commutateur –auto-repair de la commande ci-dessus, car une opération de réparation de table peut entraîner une perte de données dans certaines circonstances. L'opération due à des causes telles que des erreurs de système de fichiers. Pour ceux qui ont changé le jeu de caractères et le classement des bases de données MySQL, il peut également être nécessaire d'utiliser l'option –default-character-set. Vous trouverez plus d'informations sur tous les commutateurs disponibles et les options disponibles ici.