Comment savoir / log si le cache de niveau 2 Mise en veille prolongée a été utilisé ou non pour une requête?

StackOverflow https://stackoverflow.com/questions/2351004

Question

À l'heure actuelle, afin de vérifier si le cache de niveau 2 Mise en veille prolongée a été utilisé pour une requête de base de données, je vérifie mon journal SQL (P6Spy ou logSql = true dans Datasource.groovy) pour voir si le Grais / Mise en veille prolongée a déclenché une SQL requete. Et je suppose que si la requête n'a pas été enregistré, cela pourrait signifier que le cache a été utilisé.

Il est assez compliqué pour une information simple, non?

Alors, savez-vous un moyen simple d'obtenir et de consigner les informations: « Cache a été utilisé par rapport à la requête DB a été déclenchée »?

EDIT :. Suite aux recommandations Pascal, j'ai ajouté ce trace 'org.hibernate.cache' à ma configuration log4j

Était-ce utile?

La solution

Vous pouvez activer le org.hibernate.cache catégorie pour consigner toutes les activités de cache de second niveau. Pour ce faire (selon le Grails FAQ ), modifiez votre fichier Config.groovy. Trouver la ligne avec:

hibernate = "off"

et le remplacer par:

hibernate.cache = "trace,stdout"

Autres conseils

La réponse courte est que lorsque l'enregistrement des requêtes est activée, chaque requête est enregistrée.

Diverses statistiques sont disponibles via SessionFactory.getStatistics() et Session.getStatistics(). exécution de la requête et cache requête hasardeux compte ne sont pas disponibles sur les SessionStatistics.

Dans un environnement de test, où vous n'avez pas des sessions simultanées, vous pouvez effectuer votre requête cacheable deux fois et affirmer que les deux SessionStatistics.getQueryCacheHitCount() et SessionStatistics.getQueryExecutionCount() n'a augmenté que de 1.

Le Hibernate Profiler présente toutes ces statistiques et les journaux le plus efficacement possible.

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