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 . Status du cache de requêtes et maintenance
|
5.10.3 Configuration du cache de requêtes
Le cache de requête ajoute quelques 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
.
-
query_cache_limit
Ne pas cacher les résultats dont la taille est supérieure à cette valeur.
(1 Mo par défaut).à
-
query_cache_min_res_unit
Cette variable a été ajoutée en version 4.1.Le résultat de la requête (les données qui sont aussi envoyées au client)
sont stockés dans le cache de résultat durant la lecture. Par conséquent,
les données ne sont généralement pas gérées en un seul bloc. Le cache de requête
alloue des blocs pour stocker les données, à la demande, et lorsqu'un
bloc est plein, un nouveau bloc est alloué. Comme cette gestion de la mémoire
est coûteuse en termes de temps, le cache de requête alloue des blocs
avec une taille minmale de
query_cache_min_res_unit
.
Lorsque la requête est exécutée, le dernier bloc de résultat est réduit à la
taille de ses données, pour que la mémoire inutilisée soit libérée.
-
La valeur par défaut de
query_cache_min_res_unit
est de 4 kom, ce qui doit
être valalble pour la plupart des situations.
-
Si vous avez beaucoup de requêtes avec de petits résultats, la taille par
défaut du bloc peut conduire à de la fragmentation de mémoire (indiquée par
un grand nombre de blocs libres, dans la variable
Qcache_free_blocks
.
Cela fait que le gestionnaire de cache doit faire du ménage à cause d'un
manque de mémoire (
Qcache_lowmem_prunes
)). Dans ce cas, il faut réduire
la taille de
query_cache_min_res_unit
.
-
Si vous avez des requêtes avec de grands résultats, (voir
Qcache_total_blocks
et
Qcache_queries_in_cache
), vous pouvez gagner en performance en
accroissant
query_cache_min_res_unit
. Cependant, soyez prudent de ne pas utiliser
une valeur trop grande (voir le point précédent.
-
query_cache_size
La mémoire allouée pour la mise en cache des requêtes.
Si ce paramètre est à 0, le cache de requêtes est désactivé (valeur par défaut).
-
query_cache_type
Peut être (valeurs numériques seulement) :
Option
|
Description
|
0 |
(OFF, ne pas utiliser le cache)
|
1 |
(ON, mettre en cache tous les résultats à part les requêtes
SELECT SQL_NO_CACHE ...
)
|
2 |
(DEMAND, mettre en cache seulement les résultats des requêtes
SELECT SQL_CACHE ...
)
|
La configuration du cache de requête peut être changée durant la connexion.
La syntaxe est la suivante :
QUERY_CACHE_TYPE = OFF | ON | DEMAND
QUERY_CACHE_TYPE = 0 | 1 | 2
Option
|
Description
|
0 ou OFF |
Ne pas utiliser le cache.
|
1 ou ON |
mettre en cache tous les résultats à part les requêtes
SELECT SQL_NO_CACHE ...
.
|
2 ou DEMAND |
mettre en cache seulement les résultat des requêtes
SELECT SQL_CACHE ...
.
|
|