¿Cómo saber / log si se utilizó caché Hibernate segundo nivel o no para una consulta?
-
23-09-2019 - |
Pregunta
En la actualidad, con el fin de comprobar si se utilizó la caché de nivel 2 o Hibernate para una consulta de base de datos, puedo comprobar el registro de SQL (a través de p6spy o logSql = true en Datasource.groovy) para ver si el Grais / Hibernate provocó una SQL consulta. Y supongo que si la consulta no se registra, puede significar que se utilizó caché.
Es bastante complicado para una información sencilla, ¿verdad?
Entonces, ¿sabes una forma sencilla de obtener y registrar la información: "Caché se utilizó vs consulta DB fue provocada"?
Editar . Siguiendo las recomendaciones Pascal, he añadido este trace 'org.hibernate.cache'
a mi configuración de log4j
Solución
Otros consejos
La respuesta corta es que cuando se habilita el registro de consulta, cada consulta se registra.
Varios estadísticas están disponibles a través de SessionFactory.getStatistics()
y Session.getStatistics()
. Consulta de ejecución y de golpe caché de consultas y se pierda el recuento no están disponibles en las SessionStatistics.
En un entorno de prueba, en la que no tiene sesiones concurrentes, puede realizar su consulta cacheables dos veces y afirman que ambos SessionStatistics.getQueryCacheHitCount()
y SessionStatistics.getQueryExecutionCount()
sólo se incrementa en 1.
El Hibernate Profiler presentes todas estas estadísticas y los registros de manera más eficaz.