Question

Comment fonctionne la mise en cache de requête et comment il améliore les performances dans NHibernate?

Était-ce utile?

La solution

Lorsqu'une requête est mise en mémoire cache, NHibernate en cache les ID des entités résultant de la requête.

Très important, il ne cache pas les entités elles-mêmes - que leurs papiers d'identité. Cela signifie que vous voulez certainement faire en sorte que ces entités sont également définies comme cachable dans votre cache de second niveau. Dans le cas contraire, NHiberate va obtenir les identifiants des entités du cache de requêtes, mais être obligé d'aller à la base de données pour obtenir les entités réelles. Cela pourrait être plus coûteux que de simplement aller à la base de données en premier lieu!

Il est également important: les requêtes sont mises en cache en fonction de leurs valeurs exactes SQL et paramètres. Toute différence dans ces deux signifient que la base de données sera frappé. Donc, vous voulez probablement que pour mettre en cache les requêtes qui ont peu d'écart dans leurs entrées.

Autres conseils

Lorsque vous activez la mise en cache du NHibernate enregistre les résultats de la requête quelque part dans lorsque vous exécutez la requête. Lorsque vous essayez d'exécuter la requête avec des paramètres à nouveau il MÊMES obtenir des résultats à partir du cache, et non pas la base de données, et bien sûr, il est beaucoup plus rapide! mais méfiez-vous que d'autres applications peuvent modifier la base de données en arrière-plan! Mais NHibernate peut mettre à jour les caches.

En utilisant NHibernate n'a pas besoin d'accéder au magasin de données y accéder ce qui est dans le cache.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top