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

È stato utile?

Soluzione

Si potrebbe attivare il org.hibernate.cache categoria per registrare tutte le attività di cache di secondo livello. Per fare ciò (secondo il Grails FAQ ), modificare il file Config.groovy. Trovare la linea con:

hibernate = "off"

e sostituirlo con:

hibernate.cache = "trace,stdout"

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top