Activation du Query Cache MySQL

From All4Dev

Contents

Introduction

Activer le cache dans le fichier de configuration:

query-cache-type = 1 

Activer le cache par la variable globale (agit sur tous les clients qui se connecteront après la modification):

SET SESSION query_cache_type = (0|OFF|1|ON|2);

Vérifier que le cache est activé:

mysql> SHOW VARIABLES LIKE '%query_cache%';

Paramètrage obligatoire:

query-cache-size = 20M 

La valeur par défaut, 0, désactive le cache!

Analyser le cache:

mysql> SHOW STATUS LIKE '%qcache%'; 

Les variables

Utilisation

ATTENTION: Le cache est utilisé uniquement pour des requêtes identiques, à la case près!

Les requêtes sont supprimées du cache dès qu'une des tables sur laquelle elle porte est modifiée (INSERT, UPDATE, DELETE, TRUNCATE, ALTER, DROP TABLE, DROP DATABASE) ou par une requête explicite: RESET QUERY CACHE.

Cache à la demande

query-cache-type = 2;
SELECT SQL_CACHE ...

On peut aussi explicitement demander à ne pas mettre en cache le résultat d'une requête, dans le cas où query-cache-type = 1;.

Fragmentation

Le cache de MySQL est aloué par bloques, dont la taille est configurable via la variable query_cache_min_res_unit (disponible à partir de la version 4.1). Un phénomène de fragmentation peut donc se produire. La variable Qcache_free_blocks est un indicateur de fragmentation dans le cas où sa valeur est du même ordre que celle de la variable Qcache_total_blocks.

Requêtes non cachées

Le contenu de certaines requêtes empêchent celle-ci d'être cachées:


(Inspiration: http://www.databasejournal.com/features/mysql/article.php/3110171)