Qu'est-ce que le cache de requête 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.
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.

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:

- 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
etSELECT * 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:

- 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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

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

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

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

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

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.

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

TheinOperatorInmysqlCheckSifavAlueMatcheSanyInaspeCifiedList, simplifier les éléments detins;
