Sto supportando un'applicazione web Grails che mostra immagini diverse per client che utilizzano AmCharts. In una delle schede ci sono tre grafici, ognuno dei quali restituisce i primi dieci, quindi solo dieci righe, dal database basato su diverse misure. Ci vogliono 4-5 o talvolta anche più tempo per finire. La query viene eseguita sul DB in meno di 10 secondi.sql.rows() in Groovy sta funzionando lentamente
Il seguente metodo di servizio è chiamato a restituire i risultati:
List fetchTopPages(params, Map querySettings, String orderClause) {
if(!((params['country'] && params['country'].size() > 0) || (params['brand'] && params['brand'].size() > 0) || (params['url'] && params['url'].size() > 0))) {
throw new RuntimeException('Filters country or brand or url not selected.')
}
Sql sql = new Sql(dataSource)
sql.withStatement { stmt -> stmt.fetchSize = 100 }
Map filterParams = acquisitionService.getDateFilters(params, querySettings)
ParamUtils.addWhereArgs(params, filterParams)
String query = "This is where the query is"
ParamUtils.saveQueryInRequest(ParamUtils.prettyPrintQuery(query, filterParams))
log.debug("engagement pageviews-by-source query: " + ParamUtils.prettyPrintQuery(query, filterParams))
List rows = sql.rows(query, filterParams)
rows
}
Dopo alcune indagini era chiaro che la linea List rows = sql.rows(query, filterParams)
è quella che riprende questo tempo di caricamento.
Qualcuno ha provato questo problema in precedenza? Perché sql.rows() impiega così tanto tempo quando restituisce solo 10 righe di risultati, e la query è runnig super veloce sul lato DB?
Ulteriori informazioni:
DB: FSL1D
il seguente comando sul lato DB: java -jar ojdbc5.jar - getversion
restituisce: "Oracle 11.2.0.3.0 JDBC 3.0 compilato con JDK5 sul Thu_Jul_11_15: 41: Collegamento 55_PDT_2013 predefinito proprietà delle risorse mer 16 dicembre 08:18:32 EST 2015"
Groovy Versione: 2.3.7 Grails Versione: 2.4.41 JDK: 1.7.0
012.351.641,061 mila
per consentire a più concreta risposta pls inviare un vostro DB, driver JDBC e la versione Groovy + JDK –
DB: FSL1D il seguente comando sul lato DB: 'java-jar ojdbc5.jar - torna getversion': Oracle 11.2.0.3 .0 JDBC 3.0 compilato con JDK5 sul Thu_Jul_11_15: 41: 55_PDT_2013 #Default proprietà del collegamento delle risorse #Wed 16 dicembre 08:18:32 EST 2015 Groovy Versione: 2.3.7 Grails Versione: 2.4.41 JDK: 1.7.0 – krizsa
grazie, proverò a impostare il tuo scenario. C'è una domanda simile [qui] (http://stackoverflow.com/questions/9923981/why-sql-rows-groovy-method-is-so-slow) ma non con una risposta definitiva. –