Maison >base de données >tutoriel mysql >Introduction au cache de requêtes MySQL hautes performances

Introduction au cache de requêtes MySQL hautes performances

黄舟
黄舟original
2017-03-15 17:24:151300parcourir


Pour faire simple, pour le même SQL, vous pouvez ignorer les étapes d'analyse SQL et de génération du plan d'exécution et renvoyer directement les résultats mis en cache. Autrement dit, mettez en cache les résultats complets de SELECT requête.

1. MySQLCache de requêtes :

Le cache est stocké dans une table de hachage et référencé par une valeur de hachage. La valeur de hachage comprend : la requête elle-même, la base de données de requête actuelle, le protocole client, etc. Cependant, il convient de noter que toute différence dans l'instruction SQL entraînera un échec d'accès au cache (espaces, commentaires, noms de variables différents)

Mais le cache de requêtes présente également de sérieux problèmes de performances :
(1) Requête doit être vérifié avant de lire Si le cache est touché

(2) Si la requête n'est pas dans le cache, elle sera placée dans le cache, occupant la consommation du système

(3) Lorsque le La table de données est nouvellement mise à jour avec des données, le cache deviendra invalide, entraînant une énorme perte du système.

De toute évidence, la mise en cache et l'invalidation du cache entraîneront une consommation importante du système. L'interrogation du cache en cas de concurrence élevée peut entraîner une dégradation des performances du système et des zombies. Par conséquent, il est recommandé d'utiliser une base de données en mémoire telle que Memcache pour mettre les données en cache.


Pour faire simple, pour le même SQL, vous pouvez ignorer les étapes d'analyse SQL et de génération du plan d'exécution et renvoyer directement les résultats mis en cache. Autrement dit, les résultats complets de la requête SELECT sont mis en cache.

1. Cache de requêtes MySQL :

Le cache est stocké dans une table de hachage et référencé par une valeur de hachage. La valeur de hachage comprend : la requête elle-même, la base de données de requête actuelle, le protocole client, etc. Cependant, il convient de noter que toute différence dans l'instruction SQL entraînera un échec de l'accès au cache (espaces, commentaires, noms de variables différents)

Mais le cache de requêtes présente également de sérieux problèmes de performances :
(1) Requête doit être vérifié avant de lire Si le cache est touché

(2) Si la requête n'est pas dans le cache, elle sera placée dans le cache, occupant la consommation du système

(3) Lorsque le La table de données est nouvellement mise à jour avec des données, le cache deviendra invalide, entraînant une énorme perte du système.

De toute évidence, la mise en cache et l'invalidation du cache entraîneront une consommation importante du système. L'interrogation du cache en cas de concurrence élevée peut entraîner une dégradation des performances du système et des zombies. Par conséquent, il est recommandé d'utiliser une base de données en mémoire telle que Memcache pour mettre les données en cache.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn