MySQL dispose d'une fonctionnalité utile nommé " cache de requête " qui améliore les performances de MySQL significative lorsqu'il est activé . Le cache de requête contient le texte d'une instruction SELECT avec le résultat suivant qui a été envoyé au client. Lorsque les déclarations identiques ont été reçues à l'avenir , le serveur cherche les résultats du cache de requêtes au lieu d'exécuter à nouveau les états financiers. Le cache de requête est également partagée entre les sessions , donc un résultat de requête généré par un utilisateur peut être utilisé par un autre utilisateur . Le cache de requête est applicable dans des contextes où les tables ne changent pas souvent et le serveur reçoit de nombreuses requêtes identiques sur les tables. Cependant, cache de requête comporte des limites . Transparent Caching
cache de requêtes est complètement transparente pour l'application . Cela va causer des problèmes dans certaines circonstances. Quand cache de requête est activée, vous pouvez toujours obtenir des résultats de requête , même si les tables liées sont verrouillés et sont mises à jour . Verrouillage de tables signifie généralement les tables sont inaccessibles , mais les résultats des requêtes de cache de requête sera encore venu pour les utilisateurs.
Cache Limitation
Le cache de requête ne fonctionne pas pour les sous- sélectionne, vues à roues alignées, ou un syndicat. Les requêtes doivent être exactement les mêmes pour utiliser le résultat de cache de requête , ce qui signifie que si vous mettez des commentaires dynamiques dans la requête avec plusieurs espaces ou autre cas , vous obtenez un résultat différent de cache de requêtes. Une autre limitation est que les requêtes SELECT sont mis en cache . Évitez les commentaires ou les espaces dans le début de la requête en cache de requêtes ne vérifie que la première lettre de la requête et que si elle est "S" ça continue à procéder en cache les résultats des requêtes .
Tableau des niveaux granularité dans invalidation
Si les tables sont modifiées ou mises à jour , toutes les requêtes issues des tables sont invalidés instantanément. La plupart des requêtes ne sont pas modifiés , mais MySQL ne peut pas identifier modifiés sont , donc il supprime tous d'entre eux. C'est la principale raison qui limite l'efficacité du cache de requêtes. Surtout avec demande d'écriture élevée tels que les forums , l'efficacité de cache de requête est très faible en raison de cette limitation.
Fragmentation au fil du temps
Avec le temps , la mémoire cache de requête devient fragmenté et moins efficace . La commande "flush QUERY CACHE " peut être utilisé pour les requêtes cache défragmentation , mais il peut bloquer cache de requête pour l'amour d'un grand cache de requête , ce qui est mauvais pour les applications en ligne.
< Br >