MySQL tweaking avancé
[25 mn de lecture - paru le 5/22/2005 6:28:08 PM - Public : Expert]
|
   
|
Auteur
3. Mettre en place un cache pour les requêtes
Le cache des requêtes peut augmenter considérablement les performances du serveur si de nombreuses instructions de type SELECT sont exécutées et qu'elles renvoient le même contenu.
Le cache va comparer chaque requête SELECT avec celle qu'il a en cache. Si une requête se trouve en cache et que les tables qu'elle interroge, n'ont pas subit de modification la réponse sera retourné immédiatement sans même exécuter la requête. Sinon le serveur exécute la requête puis met le résultat en cache.
Toutefois il y a des limitations dans le traitement des requêtes en cache, si les requête ne sont pas strictement identique elles seront considérées comme différente, c'est à dire que le traitement est sensible à la casse. Des requêtes identiques qui ne s'applique pas à la même base sont elles aussi considérées comme différente.
"SELECT * FROM table;" est différent de "select * from table;" pour le serveur.
Le cache est global, il s'applique donc à chaque connexion de client. L'utilisation du cache peut donc aider à fortement limité la charge.
Les variables suivantes sont celles utiles pour la mise en cache :

query_cache_type est par défaut sur ON, la mise en cache est donc possible par défaut. Mais le cache n'est pas opérationnel tant que sa taille est égale à 0 (query_cache_size). query_cache_limit donne la limite supérieure de la taille d'une requête pour la mise en cache (sa limite par défaut est de 1Mo).
Ces variables sont en générales définies par un fichier d'option ou alors au démarrage du serveur. Mais elles peuvent être modifié par un utilisateur ayant le privilège SUPER durant l'exécution du serveur en utilisant l'instruction SET GLOBAL variable = valeur; La valeur devant être strictement numérique donc, par exemple 10485760 pour 10M.
Mais les variables définies de cette manière seront perdu au prochain démarrage.
L'instruction SHOW STATUS LIKE 'Qcache%'; donne des informations sur l'état de la mise en cache.
|