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

¿Fue útil?

Solución

Se puede activar el org.hibernate.cache categoría para registrar toda la actividad de caché de segundo nivel. Para hacerlo (de acuerdo con las Grails Preguntas ), editar el archivo de Config.groovy. Encuentra la línea con:

hibernate = "off"

y reemplazarlo con:

hibernate.cache = "trace,stdout"

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top