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