Accélérez votre site Web avec la mise en cache de requêtes MySQL

Accélérez votre site Web avec la mise en cache de requêtes MySQL
Accélérez votre site Web avec la mise en cache de requêtes MySQL

Vidéo: Accélérez votre site Web avec la mise en cache de requêtes MySQL

Vidéo: Accélérez votre site Web avec la mise en cache de requêtes MySQL
Vidéo: SAVOIR si vous avez été PIRATÉ : 5 SIGNES (IN)DIRECTS - YouTube 2024, Avril
Anonim

L'un des meilleurs moyens d'accélérer votre application Web consiste à activer la mise en cache des requêtes dans votre base de données, laquelle met en cache les requêtes SQL couramment utilisées en mémoire pour un accès quasi instantané à la page suivante qui effectue la même demande.

Si cette méthode est si puissante, c’est que vous n’avez pas à modifier votre application Web, vous devez simplement sacrifier un peu de mémoire. Cela ne résoudra pas tous vos problèmes, mais cela ne peut certainement pas faire mal.

Remarque: si votre application met fréquemment à jour les tables, le cache de requêtes sera constamment purgé et vous n’en tirerez aucun avantage. Ceci est idéal pour une application qui lit principalement dans la base de données, telle qu'un blog WordPress. Cela ne fonctionnera pas non plus si vous utilisez un hébergement partagé.

Activer la mise en cache avec le serveur en cours d'exécution

La première chose à faire est de vous assurer que votre installation de MySQL dispose de la prise en charge de la mise en cache des requêtes. La plupart des distributions le font, mais vous devriez quand même vérifier.

Vous voudrez exécuter cette commande depuis votre console MySQL, qui vous indiquera si la mise en cache des requêtes est disponible.

mysql> show variables like 'have_query_cache'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+

Ne confondez pas ceci avec le sens que la mise en cache des requêtes est réellement activée, car la plupart des fournisseurs d’hébergement ne l’activeront pas par défaut. Curieusement, mon installation Ubuntu Feisty l’avait déjà activée…

Ensuite, nous devrons vérifier si la mise en cache des requêtes est activée. Nous aurons besoin de vérifier plusieurs variables, nous pouvons donc aussi tout faire en même temps en vérifiant la variable requête%

mysql> show variables like 'query%'; +------------------------------+---------+ | Variable_name | Value | +------------------------------+---------+ | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+

Voici les éléments importants de la liste et leur signification:

  • query_cache_size - Ceci est la taille du cache en octets. Définir cette valeur sur 0 désactivera effectivement la mise en cache.
  • query_cache_type - Cette valeur doit être ON ou 1 pour que la mise en cache des requêtes soit activée par défaut.
  • query_cache_limit - Ceci est la requête de taille maximale (en octets) qui sera mise en cache.

Si la valeur query_cache_size est définie sur 0 ou si vous souhaitez simplement la modifier, vous devez exécuter la commande suivante, en gardant à l’esprit que la valeur est exprimée en octets. Par exemple, si vous souhaitez affecter 8 Mo au cache, nous utiliserons 1024 * 1024 * 8 = 8388608 comme valeur.

SET GLOBAL query_cache_size = 8388608;

De même, les autres options peuvent être définies avec la même syntaxe:

SET GLOBAL query_cache_limit = 1048576;

SET GLOBAL

query_cache_type

= 1;

Maintenant, comment savoir si cela fonctionne réellement? Vous pouvez utiliser la commande SHOW STATUS pour extraire toutes les variables qui commencent par «Qc» pour examiner ce qui se passe sous le capot.

mysql> SHOW STATUS LIKE 'Qc%'; +-------------------------+--------+ | Variable_name | Value | +-------------------------+--------+ | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | +-------------------------+--------+ 8 rows in set (0.00 sec)

Vous remarquerez dans les statistiques qu'il me reste beaucoup de mémoire libre. Si votre serveur affiche beaucoup de pruneaux lowmem, vous devrez peut-être augmenter cette valeur, mais je ne dépenserais pas trop de mémoire pour la mise en cache des requêtes pour un serveur Web… vous devez laisser de la mémoire disponible pour apache, php, ruby ou tout ce que vous utilisez.

Activer dans un fichier de configuration

Si vous souhaitez que ces modifications survivent au redémarrage ou au redémarrage du serveur mysql, vous devez les ajouter à votre fichier de configuration /etc/mysql/my.cnf pour MySQL. Notez qu'il peut se trouver à un emplacement différent sur votre installation.

Ouvrez le fichier à l’aide d’un éditeur de texte en mode sudo ou racine, puis ajoutez ces valeurs si elles n’existent pas déjà dans le fichier. Si elles existent, il suffit de les supprimer.

query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576

La mise en cache des requêtes peut considérablement améliorer la vitesse de votre application Web, en particulier si votre application lit principalement. Surveillez l'état à l'aide des méthodes ci-dessus et voyez comment cela fonctionne dans le temps.

Conseillé: