Le principe de la mise en cache des requêtes de base de données MySQL est le suivant : 1. Mettez en cache l'ensemble de résultats et l'instruction SQL de l'opération SELECT, la clé est sql et la valeur est l'ensemble de résultats de la requête 2. S'il s'agit d'une nouvelle instruction SELECT ; arrive, utilisez ce SQL comme clé de requête dans le cache, et s'il y a une correspondance, renvoyez le jeu de résultats mis en cache.
Le principe de mise en cache des requêtes de la base de données MySQL est :
Vue d'ensemble
Query Cache (QC en abrégé) stocke les instructions SELECT et les résultats de données qu'elles génèrent. Je n'ai rien à faire, j'aimerais donc résumer ce sujet et faire un mémo !
Résumé super détaillé du cache de requêtes de la base de données MySQL, qui vaut la peine d'être collecté
Principe de fonctionnement
Mettez en cache l'ensemble de résultats et l'instruction SQL de l'opération SELECT, la clé est sql et la valeur est l'ensemble de résultats de la requête
Si une nouvelle instruction SELECT arrive, utilisez ce sql ; comme clé à interroger dans le cache, si elle correspond, renvoie l'ensemble de résultats mis en cache
Critères de correspondance : si elle est exactement la même que l'instruction SQL mise en cache ; Le respect de la casse et les espaces au milieu sont simplement compris comme Une structure clé-valeur est stockée. La clé est SQL et la valeur est le résultat de la requête SQL. La chaîne Java égale à () est utilisée lors de la correspondance, par exemple :
sélectionnez l'âge de l'utilisateur et sélectionnez AGE de l'utilisateur ne correspondra pas car le cas est différent
sélectionnez l'âge de l'utilisation et sélectionnez l'âge de l'utilisateur ne correspondra pas ; parce que les espaces sont différents ;
Les espaces des deux côtés du sql peuvent être ignorés. On peut considérer que la clé est tronquée puis comparée à des égales.
Afficher les paramètres de configuration de MySQL
Exécuter
afficher les variables telles que '%query_cache%';
Vous pouvez voir les paramètres pertinents :
query_cache_type : 0-Ne pas activer le cache de requêtes, 1-Activer, 2-Activer, la valeur par défaut est ; 0;
query_cache_size : définit la taille totale de la zone de cache. La valeur minimale autorisée est de 40 Ko. Le paramètre recommandé est : 64 M/128 M ; >
Afficher l'utilisation du cache
Vous pouvez voir les paramètres pertinents :
Qcache_hits : le nombre de hits du cacheActiver le cache de requêtes
Remarque : La valeur de query_cache_size peut être définie dans les 100 Mo. Dans MySQL, le cache de requêtes est contrôlé par un verrou global, et chaque fois que le bloc mémoire du cache de requêtes est mis à jour, il doit être verrouillé.
Désactivez la mise en cache des requêtes
Définissez l'option query_cache_type = 0 et définissez query_cache_size = 0.Scénarios applicables
Utilisé pour les scénarios dans lesquels la même instruction est fréquemment soumise et les données du tableau ne changent pas très fréquemment, comme certaines pages statiques ou un certain bloc de la page Informations qui changent rarement.Étant donné que le cache de requêtes doit mettre en cache les derniers résultats de données, toute modification apportée aux données de la table (insertion, mise à jour, suppression ou autres opérations pouvant produire des modifications de données) entraînera l'actualisation du cache de requêtes. Par conséquent, pour un scénario dans lequel la fréquence de mise à jour est très faible et la fréquence des requêtes en lecture seule est très élevée, il est plus avantageux d’activer le cache de requêtes.
Scénarios non applicables
Le cache de requêtes exige strictement que les deux requêtes SQL soient exactement les mêmes, y compris les instructions SQL, les bases de données connectées, les versions de protocole, les jeux de caractères et d'autres facteurs affecteront tous. Voici plusieurs scénarios dans lesquels la mise en cache des requêtes n'est pas applicable :sous-requête
La requête implique MySQL, information_schema ou performance_schema.
Requêtes similaires à SELECT…LOCK IN SHARE MODE, SELECT…FOR UPDATE, SELECT..INTO OUTFILE/DUMPFILE, SELECT * FROM ... WHERE autoincrement_col IS NULL
La requête a généré des avertissements ;
Le mot-clé SQL_NO_CACHE existe dans l'instruction SELECT
implique une table partitionnée.
tutoriel mysql(vidéo)
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!