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.10 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.10.3 Configuration du cache de requêtes

La variable système serveur have_query_cache indique si le cache est actif :

mysql> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+
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.

Si le cache de requête est actif, la variable query_cache_type modifie son comportement. Cette variable peut prendre les valeurs suivantes :

  • 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 .
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 :

mysql> SET SESSION query_cache_type = OFF;
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 :
  • 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.

<< Configuration du cache de requêtes >>
Options relatives au cache de requêtes dans un SELECT Cache de requêtes MySQL Statut du cache de requêtes et maintenance