i sortta obtenez comment fonctionne Memcached. Vous utilisez cela stocker des morceaux de données pour améliorer les performances du site. Lorsque vous souhaitez extraire des données, vous vérifiez si c'est dans MemCached en premier, si vous le récupérez, vous le récupérez, sinon vous vérifiez votre base de données / système de fichiers, etc. P> Je ne sais pas comment / quand l'utiliser? Quelle serait une bonne opportunité? P>
J'ai les tableaux suivants: P>
Auteur: P>
ID Nom d'utilisateur Email Mot de passe Sel Email_salt Email_verified IP_ADDRESS P> BlockQuote>
Auteur_threads: P>
thread_id, auteure_id p> blockQuote>
thread: p>
ID, titre, contenu, créé p> blockQuote>
tag: p>
ID, nom p> blockQuote>
thread_tags: p>
tad_id, thread_id p> blockQuote>
Je souhaite sélectionner les 30 derniers threads, leur auteur et toutes leurs balises. Ceci est l'instruction SQL que j'utilise: p>
xxx pré> Ceci est le php que j'utilise: p>
xxx pré> où / comment Memcached soit utilisé ici? p> p>
3 Réponses :
La liste des derniers threads sera probablement demandée par de nombreux utilisateurs de votre site, alors cacher l'ensemble du résultat SQL à l'aide de sons memcached comme une opportunité parfaite. P>
Une approche très simple de Memcached consiste à utiliser des requêtes SQL sous forme de clés et de résultats respectifs en tant que valeurs ( c'est-à-dire voir ce tutoriel ici ). Vous voudrez peut-être essayer d'abord sur toutes les requêtes de base de données haute fréquence et profilez le résultat avant de commencer à optimiser davantage. P>
SQL ne fait pas ce type de mise en cache de requête déjà? Ou est-ce que le cache expiration est très bref là-bas?
Il n'y a pas de directives définies sur quand l'utiliser. Vous devez déterminer quelles requêtes de base de données sont les plus fréquentes et / ou les plus coûteuses et les cachent ceux-ci. Dans votre cas, je voudrais probablement cacher le résultat de cet appel de fonction. P>
Où je serais confus (comme vous pouvez le faire) est ce que font les nouveaux threads. Votre requête va donner des résultats différents à chaque fois que quelqu'un crée un fil. Donc, ce que vous devriez faire dans ce cas, lorsque quelqu'un crée un thread, consiste à mettre à jour la base de données, puis à ajuster votre résultat défini dans le cache en éliminant le fil le plus ancien et en ajoutant le nouveau. Vous n'avez même pas besoin de recharger les 30 derniers threads du cache, car il sera mis à jour. P>
Je ne sais tout simplement pas comment / quand l'utiliser? P> blockQuote>
Utiliser uniquement une fois que vous avez prouvé em> que l'ajout de la mise en cache est la meilleure performance boost Vous pouvez obtenir em>. Ajout de la mise en cache de données ou de la mise en cache de sortie à une application complexe qui n'avait auparavant pas une sorte de mise en cache peut découvrir un grand nombre de bogues subtils et de comportement bizarre. P>
Utilisez un profileur de code d'abord . Découvrez où votre code a problèmes de performance réels em>. Identifier les goulots d'étranglement et les réparer. Si ce correctif implique la mise en cache, alors soyez-le, mais rassembler des preuves d'abord forts>. P>
Merci beaucoup pour l'idée d'utiliser le profileur de code.