Je travaille sur un site Web occupé. Parfois, il y a beaucoup plus de trafic que de jours avarage. Le contenu est mis en cache mais comme le propriétaire du site veut voir les affichages en temps réel, il doit faire au moins une requête à MySQL par affichage, ce qui est devenu un problème de performance sous une charge importante. Tout ce que je peux penser est de créer une table différente pour les vues et mettre à jour la table d'origine régulièrement avec un travail cron. Je suis sûr que cela réduira le temps de mise à jour mais je ne suis pas sûr que ce soit le meilleur moyen.Affichage en temps réel du contenu mis en cache
Répondre
Eh bien, comme pour votre question, il y a trois options:
Ne pas mettre en cache ce morceau particulier de l'information. Mais d'après votre description, il semble que vous le fassiez déjà et que cela ne marche pas.
Utilisez un cache en écriture. Chaque fois que vous "ajoutez" ou "supprimez" un post, générez également les données mises en cache pour cet élément. Cela peut être difficile selon le fonctionnement de votre système de cache, mais c'est une option.
Invalide le cache en écriture. Chaque fois que vous souhaitez ajouter ou supprimer un message, supprimez les données mises en cache pour ces publications. De cette façon, lors de la prochaine requête pour ceux-ci du cache, le cache sera rempli. Cela peut être ou ne pas être facile, car il peut ne pas être trivial de détecter les éléments mis en cache référençant un nœud db (il peut être nécessaire d'ajouter plus d'informations, ou des objets de méta-cache pour garder une trace de ces données).
Maintenant, avec cela dit, je trouve un peu étrange qu'une requête devienne un problème de performance. Ce qui est plus probable, c'est que la requête en question doit être optimisée, ou votre serveur MySQL doit être optimisé. Je vois régulièrement plus de 5k requêtes par seconde sur certains de mes serveurs de production, et je n'ai aucun problème avec load. C'est parce que ces requêtes sont très efficaces, et j'ai Query Caching activé dans MySQL (c'est plus efficace que vous ne le pensez) ...
- 1. Mise en cache et évitement du contenu mis en cache
- 2. Sortie en temps réel PHP du contenu
- 3. affichage forme en temps réel plus
- 4. Le contenu est mis en cache
- 5. Affichage des données dans un tampon circulaire en temps réel
- 6. Prise en main d'IE sur le contenu mis en cache
- 7. Diffusion en temps réel
- 8. enregistrement en temps réel
- 9. Affichage des graphiques en temps réel (.net 2.0)
- 10. Graphes en temps réel
- 11. Cloner MovieClip en temps réel
- 12. Graphiques en temps réel en Java
- 13. CorePlot graphique en temps réel
- 14. Document.write étant mis en cache
- 15. config Squid pour assurer en-tête HTTP correspond à celle du contenu mis en cache
- 16. Comment passer des variables à du contenu mis en cache en PHP?
- 17. Mise en œuvre du chat en temps réel pour SharePoint
- 18. Lucene indexation en temps réel?
- 19. Services Web en temps réel
- 20. HTML5: son en temps réel
- 21. En utilisant T4MVC en temps réel projet
- 22. Surveillance du niveau sonore du microphone en temps réel
- 23. GLUTesselator pour la tesselation en temps réel?
- 24. JTree mises à jour en temps réel?
- 25. Serveur lié et index mis en cache
- 26. Mise en cache du contenu ASP
- 27. SSRS et rapports mis en cache
- 28. Traitement audio en temps réel sous Android
- 29. Analyse audio en temps réel sous Linux
- 30. Bungie Reach API - Statistiques en temps réel?
Merci pour votre réponse. La requête est très simple. Il met à jour la table des messages pour augmenter les affichages des messages: "UPDATE posts SET vues = views + 1 WHERE id = '$ postid' Pour la dernière partie de votre réponse, j'utilise aussi la mise en cache des requêtes Le problème ne concerne pas cette seule requête. Le serveur est très occupé et j'essaie de réduire la charge de MySQL dans la mesure du possible.Cette requête est l'une des requêtes les plus utilisées.L'optimiser pourrait donc être très utile Merci encore – redrain
Ohhh ... C'est une écriture Cette requête est très différente de l'implication que j'ai vue Quel moteur utilise la table (InnoDB ou MyISAM)? – ircmaxell