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.
Lancer la commande suivante pour voir si le Query Cache est activé :
Si vous obtenez la réponse suivante, le cache n'est pas actif :
Sur Linux :
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 :
Rédémarrez le service. Sur Windows dans les outils d'administrations, services puis MySQL. Sur Linux avec la ligne ci-dessous :
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().
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 :
deviendra
RSS | Informations |