2010-02-28 18 views
12

Actualmente, para verificar si la memoria caché de segundo nivel de Hibernate se usó para una consulta de base de datos, verifico mi registro SQL (a través de p6spy o logSql = true en Datasource.groovy) para ver si Grais/Hibernate activaba una consulta SQL . Y supongo que si la consulta no se registró, podría significar que se utilizó la memoria caché.¿Cómo saber/registrar si la memoria caché de segundo nivel de Hibernate se usó o no para una consulta?

Es bastante complicado para una información simple, ¿no?

¿Conoces una manera simple de obtener y registrar la información: "Se usó la memoria caché contra la consulta DB?"

EDIT: Siguiendo las recomendaciones de Pascal, he agregado este trace 'org.hibernate.cache' a mi configuración de log4j.

Respuesta

6

Puede activar org.hibernate.cachecategory para registrar toda la actividad de caché de segundo nivel. Para hacerlo (de acuerdo con Grails FAQ), edite su archivo Config.groovy. Encuentra la línea con:

hibernate = "off" 

y sustituirla por:

hibernate.cache = "trace,stdout" 
5

La respuesta corta es que cuando el registro de consultas está habilitado, cada consulta se registra.

Varias estadísticas están disponibles a través de SessionFactory.getStatistics() y Session.getStatistics(). La ejecución de consultas y los recuentos de aciertos y fallas de la memoria caché de consultas no están disponibles en las estadísticas de sesión.

En un entorno de prueba, en la que no tiene sesiones concurrentes, puede realizar su consulta cacheables dos veces y afirmar que ambos SessionStatistics.getQueryCacheHitCount() y SessionStatistics.getQueryExecutionCount() sólo aumentó en 1.

El Hibernate Profiler presenta todas estas estadísticas y registros de manera más efectiva

Cuestiones relacionadas