Come sapere / log se cache di Hibernate di 2 ° livello è stato utilizzato o meno per una query?
-
23-09-2019 - |
Domanda
Al momento, al fine di verificare se la cache Hibernate di 2 ° livello è stato utilizzato per una query di database, controllo il mio registro di SQL (tramite p6spy o logSql = true in Datasource.groovy) per vedere se la Grais / Hibernate innescato uno SQL query. E suppongo che se la query non è stato registrato, potrebbe significare che la cache è stato utilizzato.
E 'abbastanza complicato per una semplice informazione, non è vero?
Quindi sai un modo semplice per ottenere e registrare le informazioni: "Cache è stata usata contro di query DB è stata innescata"?
Modifica :. In seguito alle raccomandazioni Pascal, ho aggiunto questo trace 'org.hibernate.cache'
alla mia configurazione log4j
Altri suggerimenti
La risposta breve è che, quando la registrazione di query è abilitata, ogni query viene registrato.
Varie statistiche sono disponibili tramite SessionFactory.getStatistics()
e Session.getStatistics()
. l'esecuzione di query e di query della cache colpito e conta di mancanza non sono disponibili sulle SessionStatistics.
In un ambiente di test, in cui non si dispone di sessioni simultanee, è possibile eseguire la query cacheable due volte e affermare che entrambi SessionStatistics.getQueryCacheHitCount()
e SessionStatistics.getQueryExecutionCount()
solo aumentato di 1.
Il Hibernate Profiler presenta tutte queste statistiche e registri in modo più efficace.