Le suivi des interventions
Afin de centraliser les changement effectués sur la base de données, et pour que vos collègues puissent s’y retrouver, pensez à enregistrer (pourquoi pas dans une base de données d’ailleurs) toutes les interventions d’optimisation que vous faîtes, ou qui sont à faire, et les commentaires qui s’y rattachent. Cela permet de se souvenir du but de l’intervention, et en cas de dommage collatéraux sur cette modif, les commentaires pourront être pris en compte pour corriger la faille.
On peut par exemple enregistrer cela sous la forme d’un historique : la date de début, voire de fin, l’auteur, l’identification du problème, les relations possibles avec les autres interventions, une description du problème, son résultat, etc.
L’analyse des résultats
Lorsqu’intervient un problème, plusieurs solutions peuvent être envisageables. Par exemple, créer un index, améliorer la requête, mettre à jour des variables du serveur, etc. Le fait d’en modifier plusieurs en même temps ne permet pas d’identifier exactement la cause du problème initial, et peut même provoquer de nouvelles pannes dans d’autres cas d’utilisations. Le fait de ne provoquer qu’un changement à la fois permet de s’assurer de la cause du problème, et d’éviter, ou le cas échéant identifier les causes des problèmes collatéraux.
Les tests périodiques
Afin de s’assurer des performances globales de sa base de données, et de vérifier que le système général ne se fatigue pas, on peut par exemple tous les 6 mois, tous les ans, suivre le résultat d’exécution d’une même requête. MySQL fournit un outil permettant cela. La fonction BENCHMARK
Permet d’exécuter n
fois une même requête. Son résultat retourne toujours 0, mais ce qu’il est intéressant de noter, c’est le temps d’exécution de la requête.
Cet outil permet aussi de comparer la puissance de calcul de vos serveurs.
SELECT BENCHMARK(5000000, MD5(rand()));
Ici, on exécute 5 millions de fois le calcul du hashage d’un nombre aléatoire. Effectuer plusieurs fois la requête à des intervalles de temps plus ou moins espacés et noter la moyenne des temps de calculs obtenus. Revenez dans 6 mois, et recommencez, vous saurez si le système ne fatigue pas trop. Ou exécutez ces mêmes calculs sur un autre serveur pour comparer leur puissance.
Suivre les logs
Vous pouvez configurer MySQL pour loguer les requêtes lentes (slow-queries), et les requêtes qui ne font pas appel aux index car ceux-ci sont inexistants :
--log_slow_queries --log_queries_not_using_indexes