Je suis en train d'étudier l'optimisation du cache de requêtes sur mysql sur mon VPS [une configuration de 360Mo]. Au début, il était réglé à 32Mo, et je recevais un nombre non négligeable de qcache_lowmem_prunes. J'ai ajouté une tâche cron pour exécuter FLUSH QUERY CACHE périodiquement, ce qui a aidé, mais pas assez. J'ai progressivement augmenté sa taille, mais même à 80Mo [j'ai temporairement retiré de la mémoire à php-cgi], je vois toujours des purges de mémoire basse.
D'autre part, je n'ai qu'un taux de réussite d'environ 50% [c'est-à-dire, Qcache_hits est environ la moitié de Qcache_hits+Com_select]. Je soupçonne fortement que bon nombre de mes requêtes sont des requêtes ponctuelles, et ne devraient donc pas être mises en cache. J'aimerais les identifier et les marquer avec SQL_NO_CACHE.
Des suggestions pour une manière facile de le faire ?
Il est également possible que certaines de mes requêtes ne soient pas mises en cache car les tables ont changé, bien que je ne pense pas, en me basant sur un modèle mental approximatif, que ce soit le cas. Au moins, les résultats devraient être cohérents pour la plupart des requêtes; J'utilise InnoDB, donc de ce que je comprends, une mise à jour aléatoire ne invalide pas forcément toutes les sélections. Est-ce correct ?