MySQL est un système de gestion de base de données open source populaire largement utilisé dans de nombreux sites Web et applications. L'un des mécanismes importants d'amélioration des performances est la mise en cache des requêtes. La mise en cache des requêtes est le mécanisme utilisé par MySQL pour mettre en cache le jeu de résultats d'une instruction SELECT. Lorsqu'une requête est mise en cache, MySQL stocke l'ensemble de résultats en mémoire et renvoie les résultats mis en cache lorsque la même requête est à nouveau demandée, plutôt que de réexécuter la requête. Dans des circonstances idéales, la mise en cache des requêtes peut améliorer considérablement les performances des requêtes. Cependant, si le cache de requêtes n’est pas correctement configuré et optimisé, cela peut avoir un impact négatif sur les performances. Par conséquent, cet article expliquera comment améliorer les performances en optimisant le cache des requêtes MySQL.
- Configurer le cache de requêtes
Pour activer le cache de requêtes, vous devez définir la taille du cache de requêtes et activer la fonction de cache dans le fichier de configuration MySQL. Ajoutez la configuration suivante dans le fichier My.cnf :
query_cache_type = 1
query_cache_size = 128M
query_cache_type spécifie le type de cache. Une valeur de 1 signifie que la mise en cache des requêtes est activée ; une valeur de 0 signifie que la mise en cache des requêtes est désactivée.
query_cache_size spécifie la taille du cache. Il spécifie la taille totale de tous les jeux de résultats de requête pouvant être mis en cache. Sa valeur doit être ajustée en fonction de la mémoire système et des exigences de charge. Si le cache est trop petit, tous les jeux de résultats ne seront pas mis en cache. Si le cache est trop volumineux, la mémoire est gaspillée et les performances peuvent en souffrir.
- Évitez les requêtes de longue durée
La mise en cache des requêtes ne fonctionne que pour les requêtes SELECT, et les résultats mis en cache ne seront renvoyés que si l'ensemble de résultats de la requête n'a pas changé. Par conséquent, si le jeu de résultats de la requête change fréquemment, l’efficacité du cache de requête sera considérablement réduite. Les requêtes de longue durée peuvent également rendre la mise en cache des requêtes moins efficace, car les résultats mis en cache doivent être conservés en mémoire, et si les résultats dans le cache sont obsolètes, la requête doit être réexécutée pour mettre à jour le cache. Par conséquent, les requêtes de longue durée doivent être évitées autant que possible pour améliorer l’efficacité de la mise en cache.
- Évitez d'écrire des requêtes différentes
S'il existe plusieurs requêtes avec la même instruction SQL et les mêmes paramètres de requête, vous pouvez améliorer l'efficacité de la mise en cache des requêtes en utilisant des instructions préparées. Les instructions préparées permettent de lier les paramètres par nom au lieu d'envoyer les mêmes paramètres via une copie de l'instruction SQL. De cette manière, plusieurs requêtes SQL peuvent être fusionnées en une seule, et un seul jeu de résultats de requête doit être mis en cache dans le cache de requêtes.
- Désactiver la suppression inutile du cache des requêtes
L'ensemble de résultats de la requête doit être effacé lorsque la table de données est modifiée, ce qui se produit généralement lorsque les instructions INSERT, UPDATE et DELETE sont exécutées. Cependant, si le cache est toujours vidé, les performances du cache seront gaspillées. Par conséquent, vous devez choisir de vider uniquement les caches nécessaires et de désactiver la suppression inutile du cache de requêtes. La mise en cache des requêtes peut être désactivée en ajoutant le mot clé SQL_NO_CACHE à la requête SQL.
- Activer les statistiques du cache de requêtes
MySQL fournit des statistiques de cache de requêtes, qui peuvent être utilisées pour comprendre l'utilisation du cache de requêtes. Vous pouvez utiliser la commande SHOW STATUS pour afficher les statistiques du cache de requêtes. Ces statistiques peuvent fournir des informations sur le taux de réussite du cache, la taille d'utilisation du cache, etc. Ces informations peuvent aider à identifier les goulots d'étranglement des performances dans le cache de requêtes et à examiner l'efficacité de l'utilisation du cache.
- Choisissez les éléments de cache appropriés
Par défaut, MySQL met en cache l'ensemble de résultats de toutes les instructions SELECT, même si l'ensemble de résultats est très petit. Toutefois, cela peut gaspiller le cache, car la plupart des petits ensembles de résultats risquent de ne plus jamais être utilisés. Pour éviter ce gaspillage, vous pouvez choisir si le jeu de résultats doit être mis en cache en utilisant le mot clé SQL_CACHE ou SQL_NO_CACHE lors de la requête.
- Mettre à jour le cache de requêtes
Lorsque la table de base de données change, les résultats de requête correspondants dans le cache de requêtes doivent également être mis à jour. Cependant, ce processus nécessite beaucoup de ressources CPU et mémoire. Pour éviter cette situation, des techniques de vérification et d'actualisation peuvent être utilisées pour mettre à jour le cache de requêtes. Cette technologie permet à MySQL de mettre à jour uniquement la partie du cache de requêtes qui doit être mise à jour, plutôt que de vider l'intégralité du cache.
En bref, l'optimisation du cache des requêtes MySQL est la clé pour améliorer les performances. Les performances des requêtes peuvent être améliorées en configurant la taille appropriée du cache de requêtes, en évitant les requêtes de longue durée, en utilisant des instructions préparées, en désactivant l'effacement inutile du cache de requêtes, en activant les statistiques du cache de requêtes, en sélectionnant les entrées de cache appropriées et en mettant à jour le cache de requêtes, et en réduisant la surcharge.
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