Nous avons une application Web qui écoute les appels de service Web, construit les requêtes, extrait les données de la base de données et renvoie les résultats au client. Étant donné que nous rencontrons des problèmes de performances, nous souhaitons mettre en cache les données côté serveur. Les requêtes sont complexes qui impliquent plusieurs jointures. La base de données est mise à jour via une autre application qui se trouve en dehors de l'application Web. Je ne pense pas que nous puissions utiliser EHCache car la base de données n'est pas mise à jour via la même application et les paramètres de la requête changent fréquemment. Quelles stratégies de Caching pouvons-nous adapter ici pour améliorer la performance? Remarque: Les requêtes sont optimisées pour de meilleures performances.Mise en cache pour les requêtes fréquemment modifiées
Répondre
Je ne pense pas que nous utilisons ca EHCache que la base de données est mise à jour ne par la même application
Si vous ne passez pas par l'API Hibernate, Hibernate ne sera pas en mesure de invalidate les zones de cache de second niveau pertinentes si nécessaire. Mais vous pouvez le faire vous-même (voir les diverses méthodes evictXxx
sur le SessionFactory
). Selon la fréquence des mises à jour, vous pourriez avoir des avantages. Notez également que EHCache est juste une mise en œuvre de cache de second niveau parmi d'autres (que vous utilisiez EHCache ou non, cela n'utilise pas le cache de second niveau qui est pertinent pour la question).
(...) et les paramètres de requête changent fréquemment.
C'est plus ennuyeux. L'utilisation du cache de requêtes fonctionne bien pour les requêtes fréquemment exécutées (y compris les paramètres). Si la ré-exécution d'une requête donnée (y compris les paramètres) est un événement improbable, vous ne tirerez pas beaucoup de bénéfices du cache de requêtes.
Dans ce cas, j'essaierais peut-être d'utiliser Query#iterate()
au lieu de Query#list()
. Alors que le plus tard retourne les résultats de la requête comme List
, avec l'ancien:
Les entités retournées comme les résultats sont initialisés à la demande. La première requête SQL renvoie des identifiants uniquement.
Cela pourrait donner de meilleures performances IF les entités correspondant aux ID sont dans le cache de niveau 2. Si ce n'est pas le cas, cela ne fonctionnera pas mieux.
Quelles stratégies de mise en cache pouvons-nous adapter ici pour améliorer les performances?
Je n'ai pas de meilleure suggestion que celle ci-dessus. La mise en cache fonctionne lorsqu'un cache est un événement probable.
Remarque: Les requêtes sont optimisées pour de meilleures performances.
Hmm ... que voulez-vous dire? :)
- 1. Mise en œuvre pour la mise en cache des requêtes
- 2. Mise en cache des requêtes avec HttpModule
- 3. Mise en cache de requêtes dans MySQL
- 4. Mise en cache des requêtes AJAX
- 5. Mise en cache des requêtes MySQL
- 6. Rails DB Requêtes et Mise en cache les meilleures pratiques
- 7. Désactiver la mise en cache eclipselink et la mise en cache des requêtes - ne fonctionne pas?
- 8. Comment empêcher la mise en cache de requêtes asynchrones?
- 9. Comment configurer la mise en cache des requêtes dans EclipseLink
- 10. interaction Jdbc modèle et MySql pour changeant fréquemment requêtes
- 11. Mise en cache et conversion pendant la mise en cache
- 12. Bibliothèques de mise en cache pour .NET
- 13. Mise en cache dynamiquement les images chargées
- 14. Mise en cache Django pour un blog
- 15. rails mise en cache pour application.rb
- 16. Mise en cache en mmap
- 17. Mise en cache Type.GetXYZ
- 18. Résultats de pagination de la mise en cache de l'infrastructure Zend pour différentes requêtes
- 19. Mise en cache d'objets pour améliorer les performances
- 20. Page Mise en cache pour les rails 3
- 21. Schémas de mise en cache pour les langages gérés
- 22. Référence pour les avantages de la mise en cache
- 23. Mise en cache PHP (HTML + PHP)
- 24. Mise en cache côté client dans les applications Rich Internet
- 25. Pourquoi la mise en cache des requêtes sur les rails ne fonctionne-t-elle pas?
- 26. Est-il important de gérer la mise en cache des requêtes dans les tests unitaires ActiveRecord?
- 27. .htaccess pour la compression, la mise en cache du navigateur, la mise en cache proxy, etc.
- 28. Mise en cache en HTML5
- 29. Wordpress/PHP - Cache les requêtes personnalisées?
- 30. Entity Framework mise en cache sous ASP.Net