| 5.11 Cache de requêtes MySQL
 5 Administration du serveur
 Manuel de Référence MySQL 4.1 : Version Française
 
 . Comment fonctionne le cache de requêtes
 . Options relatives au cache de requêtes dans un SELECT
 ->Configuration du cache de requêtes
 . Statut du cache de requêtes et maintenance
 
 
 | 
  5.11.3 Configuration du cache de requêtes La variable système serveur  
have_query_cache
  indique si le cache
est actif :  
 Le cache de requête ajoute plusieurs variables système  
MySQL
  
liées à  
mysqld
  qui peuvent être spécifiées
dans un fichier de configuration, en ligne de commande lors du démarrage 
de  
mysqld
 .
Les variables systèmes liées au cache sont toutes préfixées avec 
 
query_cache_
 . Elles sont décrites brièvement dans la section 
 Variables sytème du serveur , avec des informations complémentaires.Pour configurer la taille du cache de requêtes, modifiez la variable système
 
query_cache_size
 . En lui donnant la valeur de 0, vous le désactivez.
La taille par défaut du cache est de 0 : le cache est désactivé par défaut.| 
mysql> SHOW VARIABLES LIKE 'have_query_cache';+------------------+-------+
 | Variable_name    | Value |
 +------------------+-------+
 | have_query_cache | YES   |
 +------------------+-------+
 | 
 
Si le cache de requête est actif, la variable  
query_cache_type
  modifie son comportement.
Cette variable peut prendre les valeurs suivantes :
 
Modifier la valeur  
GLOBAL
  de  
query_cache_type
  détermine le comportement
du cache pour tous les clients qui se connecteront après la modification.
Les clients individuels peuvent modifier le comportement du cache 
pour leur connexion avec l'option  
SESSION
  de  
query_cache_type
 . 
Par exemple, un client peut désactiver le cache de requête pour ses propres
requêtes avec :
La valeur de  
0
  ou  
OFF
  empêche la mise en cache ou la lecture
de résultats en cache.
La valeur de  
1
  ou  
ON
  permet le cache, sauf pour les commandes qui
commencent par  
SELECT SQL_NO_CACHE
 .
La valeur de  
2
  ou  
DEMAND
  impose la mise en cache de toutes les requêtes,
même celles qui commencent par  
SELECT SQL_CACHE
 . Pour contrôler la taille maximale des résultats de requêtes qui peuvent être
mis en cache, il faut modifier la valeur de la variable  
query_cache_limit
 . 
La valeur par défaut de 1Mo.Le résultat d'une requête (les données envoyées au client) sont stockées dans
le cache durant la lecture. Par conséquent, les données ne sont pas manipulées
en un seul gros morceau. Le cache de requête alloue des blocs à la demande,
pour stocker les données, et dès qu'un bloc est rempli, un autre est alloué.
Comme l'allocation de mémoire est une opération coûteuse (en temps), le cache
de requêtes crée des blocs avec une taille minimale de  
query_cache_min_res_unit
 ,
jusqu'à la taille des données à mettre en cache. Suivant le type de requêtes
exécutées, vous pourrez adapter la valeur de la variable  
query_cache_min_res_unit
  :| 
mysql> SET SESSION query_cache_type = OFF;
 | 
 
La valeur par défaut de  
query_cache_min_res_unit
  est 4Ko. 
Cela doit être adapté la plupart des situations.
Si vous avez beaucoup de requêtes avec de petits résultats, la taille par défaut
sera un peu grande, et conduit à une fragmentation inutile de la mémoire, indiquée
par un grand nombre de blocs libres. La fragmentation va forcer le cache à 
effacer d'anciennes requêtes pour libérer de la place. Dans ce cas, réduisez 
la valeur de  
query_cache_min_res_unit
 .  Le nombre de blocs libres et
de requêtes supprimées pour libérer de la place sont stockées dans les
variables  
Qcache_free_blocks
  et  
Qcache_lowmem_prunes
 .
Si la plupart de vos requêtes ont de grands résultats (vérifiez les 
variables  
Qcache_total_blocks
  et  
Qcache_queries_in_cache
 ),
vous pouvez augmenter la valeur de  
query_cache_min_res_unit
 . Cependant,
soyez prudent de ne pas aggrandir trop la valeur (voir point précédent). 
query_cache_min_res_unit
  a été ajoutée en MySQL 4.1.
 |