Table des matières
Comment ça marche?
Pourquoi n'est-il pas recommandé maintenant?
Quelles sont les alternatives?
Maison base de données tutoriel mysql Qu'est-ce que le cache de requête MySQL

Qu'est-ce que le cache de requête MySQL

Jul 12, 2025 am 02:20 AM
mysql

MySQL Query Cache est un mécanisme de mise en cache intégré utilisé pour mettre en cache les instructions de requête et leurs résultats pour améliorer les performances des requêtes en double. 1. Il évite l'exécution répétée de la même requête en renvoyant directement les résultats mis en cache; 2. Le cache est basé sur des instructions SQL complètes, des différences d'instructions ou des modifications de données de table entraîneront une défaillance du cache; 3. MySQL 8.0 a complètement supprimé cette fonctionnalité en raison de mauvaises performances de concurrence, d'un faible taux de réussite et de coûts de maintenance élevés; 4. Les alternatives incluent l'utilisation de stratégies de mise en cache plus flexibles et plus efficaces telles que redis / memcached, database midware proxysql, cache de page, etc.

Qu'est-ce que le cache de requête MySQL

MySQL Query Cache est un mécanisme de mise en cache intégré dans MySQL Server. Sa fonction consiste à mettre en cache des instructions de requête et à des résultats de requête correspondants . Lorsque la même requête SQL est à nouveau exécutée, MySQL peut récupérer directement les résultats du cache sans analyser les instructions et exécuter la requête, en économisant ainsi les ressources et en améliorant la vitesse de réponse.

Qu'est-ce que le cache de requête MySQL

Cependant, il convient de noter que cette fonction a été complètement supprimée dans MySQL 8.0, donc si vous utilisez 8.0 ou des versions plus récentes, le cache de requête n'existe plus. Mais dans certaines versions plus anciennes (comme 5.x), il peut toujours être configuré et utilisé.


Comment ça marche?

Le cache de requête fonctionne relativement simple:

Qu'est-ce que le cache de requête MySQL
  • Lorsqu'une requête sélectionnée est exécutée, MySQL vérifie d'abord le cache de requête.
  • Si vous constatez que cette requête a été exécutée et que le résultat est toujours en cache, le résultat sera renvoyé directement.
  • S'il n'y a pas de cache de coup, la requête sera exécutée et le résultat sera enregistré dans le cache pour la prochaine utilisation.

Il y a plusieurs points clés auxquels faire attention:

  • Le cache est basé sur des instructions SQL complètes, c'est-à-dire SELECT * FROM users et SELECT * from users seront considérés comme deux instructions différentes.
  • Si les données du tableau changent (telles que l'insertion, la mise à jour et la suppression), tous les caches liés au tableau seront effacés.

Pourquoi n'est-il pas recommandé maintenant?

Bien que cela semble assez pratique, il y a de nombreux problèmes avec le cache de requête dans une utilisation réelle:

Qu'est-ce que le cache de requête MySQL
  • Mauvaise performance de concurrence : dans les scénarios avec des écritures simultanées élevées, une compensation fréquente du cache affectera les performances.
  • Faible taux de succès : si l'instruction de requête change légèrement ou si les données sont mises à jour fréquemment, le taux de réussite sera très faible.
  • Coût de maintenance élevé : Afin de maintenir la cohérence du cache, un nettoyage fréquent des entrées de cache est nécessaire, ce qui augmente à son tour la charge.

C'est aussi pourquoi MySQL a officiellement décidé de supprimer complètement la fonction de cache de requête de 8.0.


Quelles sont les alternatives?

Étant donné que le cache de requête fourni avec MySQL n'est plus disponible, nous pouvons considérer d'autres alternatives:

  • Utilisez Redis ou Memcached comme cache au niveau de l'application et contrôlez manuellement les résultats de la requête doivent être mis en cache.
  • Utilisez la base de données Proxy ou Middleware pour implémenter le cache de requête, comme l'utilisation de ProxySQL.
  • Pour les sites Web avec beaucoup de contenu statique, la mise en cache de page, la mise en cache d'objets et d'autres moyens peuvent également être utilisés pour réduire la pression de la base de données.

Bien que ces méthodes nécessitent un développement ou une configuration supplémentaire, ils sont beaucoup plus flexibles et les performances que le cache de requête d'origine.


Fondamentalement, c'est tout. Si vous utilisez toujours l'ancienne version de MySQL, comprendre les principes du cache de requête peut aider à résoudre les problèmes de performances; Mais si vous êtes dans un nouveau projet, il est recommandé de le sauter et de passer à une stratégie de mise en cache plus moderne.

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 de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment ajouter une clé primaire à une table existante dans MySQL? Comment ajouter une clé primaire à une table existante dans MySQL? Aug 12, 2025 am 04:11 AM

Pour ajouter une clé primaire à une table existante, utilisez l'instruction altertable avec la clause AddPrimaryKey. 1. Assurez-vous que la colonne cible n'a pas de valeur nulle, pas de duplication et est définie comme notnull; 2. La syntaxe de clé primaire à colonne unique est le nom de table altertable addPrimaryKey (nom de colonne); 3. La syntaxe de la clé primaire de combinaison multi-colonnes est le nom de table altertable addPrimaryKey (colonne 1, colonne 2); 4. Si la colonne permet Null, vous devez d'abord exécuter Modify pour définir Notnull; 5. Chaque tableau ne peut avoir qu'une seule clé primaire et l'ancienne clé primaire doit être supprimée avant d'ajouter; 6. Si vous avez besoin de l'augmenter vous-même, vous pouvez utiliser Modify pour définir Auto_Increment. Assurer les données avant le fonctionnement

Comment sauvegarder une base de données dans MySQL Comment sauvegarder une base de données dans MySQL Aug 11, 2025 am 10:40 AM

L'utilisation de MySQLDump est le moyen le plus courant et le plus efficace de sauvegarder les bases de données MySQL. Il peut générer des scripts SQL contenant la structure et les données de la table. 1. La syntaxe de base est: mysqldump-u [nom d'utilisateur] -p [nom de base de données]> backup_file.sql. Après l'exécution, entrez le mot de passe pour générer un fichier de sauvegarde. 2. Sauvegardez plusieurs bases de données avec - Databases Databases: MySQLDump-Uroot-P --Databasesdb1db2> multiple_dbs_backup.sql. 3. Sauvegarder toutes les bases de données avec - toutes les données: MySqlDump-Uroot-P

Expliquez les stratégies d'indexation de la base de données (par exemple, B-Tree, Text complet) pour une application PHP soutenue par MySQL. Expliquez les stratégies d'indexation de la base de données (par exemple, B-Tree, Text complet) pour une application PHP soutenue par MySQL. Aug 13, 2025 pm 02:57 PM

B-TreeIndexesAreBestFormostPhpapplications, AstheySupportequality andRangequeries, Tri, andareIdEalforColumnSuseInwhere, Join, OrorderByClauses; 2.Full-TextIndexessHouldFornaturAralLanguageorBooleanSearSonTextFieldslikeArlesorProductDescriptiiReScriptidScriptidiansearchesEnTextFieldslikeArlesorProductDescripti

Comment changer le séparateur Group_Concat dans MySQL Comment changer le séparateur Group_Concat dans MySQL Aug 22, 2025 am 10:58 AM

Vous pouvez personnaliser le séparateur en utilisant le mot-clé séparateur dans la fonction group_concat (); 1. Utilisez le séparateur pour spécifier un séparateur personnalisé, comme le séparateur '; «Le séparateur peut être changé pour un semi-colon et plus d'espace; 2. Les exemples courants incluent l'utilisation du caractère de tuyau '|', de l'espace '', du caractère de rupture de ligne '\ n' ou de la chaîne personnalisée '->' comme séparateur; 3. Notez que le séparateur doit être une chaîne littérale ou expression, et la longueur du résultat est limitée par la variable Group_Concat_Max_Len, qui peut être ajustée par setSessionGroup_Concat_Max_Len = 10000; 4. Le séparateur est facultatif

Quelle est la différence entre Union et Union dans MySQL? Quelle est la différence entre Union et Union dans MySQL? Aug 14, 2025 pm 05:25 PM

UnionRemoveS aduplicate WhiceUnionAllkeepSallRowscludedingDuplications; 1. UnionPerformsDeduplication gysortingand comparingrows, retournantonylyuqueRereSults, qui fait que la doseur de solutionnaliques;

Comment verrouiller les tables dans MySQL Comment verrouiller les tables dans MySQL Aug 15, 2025 am 04:04 AM

La table peut être verrouillée manuellement à l'aide de Locktables. Le verrouillage de lecture permet à plusieurs sessions de lire mais ne peut pas être écrite. Le verrouillage d'écriture fournit des autorisations de lecture et d'écriture exclusives pour la session en cours et d'autres sessions ne peuvent pas lire et écrire. 2. Le verrou est uniquement pour la connexion actuelle. L'exécution de StartTransaction et d'autres commandes libéreront implicitement le verrou. Après le verrouillage, il ne peut accéder qu'à la table verrouillée; 3. N'utilisez-le que dans des scénarios spécifiques tels que la maintenance de la table Myisam et la sauvegarde des données. INNODB devrait donner la priorité à l'utilisation de verrous de transaction et au niveau des lignes telles que Select ... ForupDate pour éviter les problèmes de performances; 4. Une fois l'opération terminée, les déverrouillage doivent être explicitement libérés, sinon un blocage des ressources peut se produire.

Comment sélectionner les données d'un tableau dans MySQL? Comment sélectionner les données d'un tableau dans MySQL? Aug 19, 2025 pm 01:47 PM

Pour sélectionner les données de la table MySQL, vous devez utiliser l'instruction SELECT, 1. Utilisez SELECTColumn1, Column2FromTable_Name pour obtenir la colonne spécifiée, ou utilisez SELECT * pour obtenir toutes les colonnes; 2. Utilisez la clause pour filtrer les lignes, telles que SELECTNAME, AgefromUsers WHERAGEAGE> 25; 3. Utilisez l'ordre pour trier les résultats, tels que OrderByageSc, représentant l'ordre descendant de l'âge; 4. Utilisez Limit pour limiter le nombre de lignes, telles que Limit5 pour renvoyer les 5 premières lignes, ou utilisez Limit10OffSet20 pour implémenter la pagination; 5. Utiliser et, ou et parenthèses pour combiner

Comment utiliser l'opérateur in MySQL? Comment utiliser l'opérateur in MySQL? Aug 12, 2025 pm 03:46 PM

TheinOperatorInmysqlCheckSifavAlueMatcheSanyInaspeCifiedList, simplifier les éléments detins;

See all articles