Vous pouvez vérifier que vous avez le cache de requête sur MySQL avec la commande suivante :
mysql> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| have_query_cache | YES |
+------------------+-------+
1 row in set (0.00 sec)
Avec la commande FLUSH QUERY CACHE
, vous
pouvez défragmenter le cache de requêtes pour mieux en
utiliser la mémoire. Cette commande n'effacera aucune requête
du cache.
La commande RESET QUERY CACHE
efface tous les
résultats de requêtes du cache. FLUSH
TABLES
aussi.
Vous pouvez visualiser les performances du cache de requêtes
avec SHOW STATUS
:
mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+--------+
| Variable_name | Value |
+-------------------------+--------+
| Qcache_free_blocks | 36 |
| Qcache_free_memory | 138488 |
| Qcache_hits | 79570 |
| Qcache_inserts | 27087 |
| Qcache_lowmem_prunes | 3114 |
| Qcache_not_cached | 22989 |
| Qcache_queries_in_cache | 415 |
| Qcache_total_blocks | 912 |
+-------------------------+--------+
La description de chaque variable est présentée dans la section Section 5.2.4, « Variables de statut du serveur ». Certaines utilisations sont présentées ici.
Le nombre total de commandes SELECT
vaut :
Com_select + Qcache_hits + requêtes avec une erreur
La valeur de Com_select
est :
Qcache_inserts + Qcache_not_cached + erreurs de droits d'accès ou de colonnes
Le cache de requêtes utilise des blocs de longueur variable, ce
qui fait que Qcache_total_blocks
et
Qcache_free_blocks
peuvent indiquer une
fragmentation de la mémoire du cache. Après un appel à
FLUSH QUERY CACHE
un seul (grand) bloc libre
subsiste.
Note : Chaque requête a besoin au minimum de deux blocs (un pour le texte de la requête et un autre, ou plus, pour le résultat). De même, chaque table utilisée par une requête a besoin d'un bloc, mais si deux ou plusieurs requêtes utilisent la même table, seul un bloc a besoin d'être alloué.
Vous pouvez aussi utiliser la variable
Qcache_lowmem_prunes
pour ajuster la taille
du cache de requêtes. Elle compte le nombre de requêtes qui
ont été supprimées du cache pour libérer de la place pour
les nouvelles requêtes. Le cache de requêtes utilise une
stratégie du type la plus anciennement
utilisée
(least recently used ou
LRU
) pour décider de quelle requête doit être
retirée. Des informations de paramétrage sont données dans la
section Section 5.11.3, « Configuration du cache de requêtes ».
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.