Utilitaires
Scripts
Divers
Jeux
Rechercher
Quillevere.net
Réflexions informatiques

Utiliser le cache MySQL pour accélérer un site Internet

24/10/2019

Depuis la version 5.6 de MySQL, le cache est désactivé par défaut car il s'est avéré que, dans certains cas, le cache réduit les performances de ce SGBD : l'invalidation d'un volume de données conséquent peut occuper un temps supérieur au temps nécessaire d'exécution d'une requête. Pour autant, le cache MySQL est idéal pour certaines applications déployées à une échelle limitée ou traitant de petits ensembles de données.

Vérifier si le cache MySQL est activé

Lancer la commande suivante pour voir si le cache est activé :

SHOW VARIABLES LIKE 'query_cache_type';

Si vous obtenez la réponse suivante, le cache n'est pas actif :

Activer le cache MySQL

Sur Linux :

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Sur Windows :

Ouvrez le fichier my.ini à la racine du répertoire d'installation de MySQL  (par défaut c:\Program Files\MySQL)

Ajouter la ligne ci-dessous et sauver le fichier :

query_cache_type=1

Rédémarrez le service. Sur Windows dans les outils d'administrations, services puis MySQL. Sur Linux avec la ligne ci-dessous :

sudo service mysql restart

En effectuant une requête 2 fois, la seconde requête doit renvoyer alors les résultats plus rapidement. Dans certains cas, la requête mettra le même temps, notamment quand le code de la requête inclus le mot clé NOW().

Utiliser le cache MySQL avec le mot clé NOW

Le mot clé NOW() désactive implicitement le cache de MySQL. Même si vous n'avez pas besoin de l'heure et souhaitez filtrer sur le jour, en faisant DATE(NOW()), le fait d'avoir NOW dans la requête désactive systématiquement le cache.

Pour l'utiliser malgré tout, il faut passer en paramètre la date ou la date-heure de fin. Au lieu de DATE(NOW()), en passant directement une date fixe, comme "2019-10-24", MySQL utilisera le cache. Au lieu de NOW, il est envisageable de passer la date du lendemain par exemple .

Ainsi :

SELECT * FROM matable WHERE matable_date BETWEEN DATE_SUB(NOW(), INTERVAL 24 HOUR) AND NOW())

deviendra

SELECT * FROM matable WHERE matable_date BETWEEN '2019-10-23' AND '2019-10-25'
Dernière modification le 27/10/2019 - Quillevere.net

Rechercher sur le site

rss RSS info Informations