Comment savoir / log si le cache de niveau 2 Mise en veille prolongée a été utilisé ou non pour une requête?
-
23-09-2019 - |
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
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.