Avant de se lancer dans une investigation de performance approfondie — wait stats, plans d’exécution, benchmarks I/O — il vaut la peine de vérifier si une simple négligence de configuration est à l’origine du problème. L’une des améliorations rapides les plus courantes et à fort impact dans MySQL est le dimensionnement du cache de requêtes. Un cache désactivé, trop petit ou mal dimensionné peut représenter une part significative de la latence des requêtes sur des charges de travail intensives en lecture.
Note : le cache de requêtes MySQL a été déprécié dans MySQL 5.7.20 et complètement supprimé dans MySQL 8.0. Si vous utilisez MySQL 8.0+, cet article ne s’applique pas — envisagez ProxySQL ou un cache au niveau applicatif à la place.
Comment fonctionne le cache de requêtes MySQL
Quand le cache de requêtes est activé, MySQL stocke le résultat d’une requête SELECT en mémoire. Les requêtes identiques suivantes (même texte, même contexte de schéma) sont servies directement depuis la mémoire sans accéder au disque. Un résultat mis en cache est invalidé dès que des données dans les tables sous-jacentes changent.
Trois paramètres contrôlent le comportement :
query_cache_size— mémoire totale allouée au cache. Par défaut : 0 (désactivé).query_cache_limit— taille maximale d’un seul résultat mis en cache. Les résultats plus grands que cette valeur ne sont pas mis en cache.query_cache_min_res_unit— taille minimale des blocs d’allocation. Des valeurs plus petites réduisent la fragmentation mémoire pour les petits résultats.
Étape 1 : vérifier la configuration actuelle
SHOW VARIABLES LIKE '%query_cache%';
-- Sortie attendue sur une instance activée :
-- +------------------------------+----------+
-- | Variable_name | Value |
-- +------------------------------+----------+
-- | have_query_cache | YES |
-- | query_cache_limit | 2097152 | -- 2 Mo max par résultat
-- | query_cache_min_res_unit | 4096 | -- blocs de 4 Ko
-- | query_cache_size | 33554432 | -- 32 Mo total
-- | query_cache_type | ON |
-- +------------------------------+----------+
Étape 2 : activer et configurer
-- Activer et dimensionner le cache (à ajouter dans my.cnf)
query_cache_type = 1
query_cache_size = 67108864 -- 64 Mo
query_cache_limit = 2097152 -- 2 Mo max par résultat
Après modification de my.cnf, redémarrez le service MySQL. Surveillez les métriques Qcache_hits vs Qcache_inserts pour évaluer l’efficacité du cache sur votre charge de travail.








