gostaria de ums conselhos
tenho um relatório com 1 subrelatorio e uma base oracle de 100 GB (muitas tabelas com mais de 60 milhoes de registros).
meu relatorio é complexo, e demora 6 minutos para gerar um arquivo pdf de 1 mes com algumas centenas de dados…
o custo das consultas são baixos (levando em consideração o tamanho da base).
gostaria de saber qual a influencia de usar variaveis dentro o ireport para fazer os calculos.
isso afeta muito o desempenho?
Execute seu SQL no seu SGBD e verifique o tempo de resposta…
Vai conseguir identificar onde ocorre o maior tempo perdido e onde poderá melhorar…
Bem provavel que seja seu SQL que esteja perdendo em desempenho
R
rafaelviny
TheKill
como disse acima o custo da operação (execução do SQL) é baixo.
não é o SQL.
é no Ireport…
obrigado
T
TheKill
então bem provavel que não seja problema no iReport, bem como comentei comulmente isso é SQL
como nao quiz postas os resultados nao tem como serem analisados…
Se não se trata de problema no SQL então seu relatório que foi gerado de forma a ficar preso em alguma rotina, talvez tenha criado muitas variables de calculos. Pode reduzir esse tipo de coisa no proprio SQL…
Sugestão, nesses casos de relatorios complexos, faça toda logica do negocio em Java, e passe uma Collection para o relatorio, CollectionDataSource
R
rafaelviny
TheKill
nao teria como postar os codigos, sqls , etc…
sao gigantes…
existem variaveis que fazem os calculos, estou deletando elas para ver se isso é o problema mesmo.
no meu post acima mencionei que acreditava que isso era o problema, vou excluir elas e fazer uns testes.
e nao tem como fazer esses calculos na aplicação … vou ver se consigo tirar isso do ireport e fazer os calculos no SQL que é bem mais rapido
porem a tarde vejo isso
obrigado
T
TheKill
Como não tem como fazer na aplicação?!
Se vc faz o calculo no relatório, com toda certeza da pra fazer na aplicação sim.
De uma boa estuda em Collections, vai ver que pode ser mto util
R
rafaelviny
os calculos eu faço com resultados do sql, se eu tiver que minerar esses resultados do banco, trazer para a aplicação e depois enviar para o relatorio estou trocando 6 por meia duzia.
o que funcionaria era tirar os calculos do ireport e fazer no sql
T
TheKill
Eu sinceramente acho que você ta entendo mal ehehe… Vc vai continuar com seu gigante SQL, tudo normal. ao invés de enviar um SQL para o relatório…
Vai fazer um objeto que ja tem TODAS as informações calculadas na propria aplicação. te digo que é quase 99% de que seu relatório vai ficar mais rápido.
F
feltraco
Tb sempre fiz dessa forma.
Buscando dados e trabalhando eles na aplicacao, e deixando o ireport somente exibir estes dados.
Se vc jah tem prnto consultando via ireport vai dar um traablhao mudar, mas tb acho que iria melhorar em muito seu desempenho.
T
TheKill
feltraco:
Tb sempre fiz dessa forma.
Buscando dados e trabalhando eles na aplicacao, e deixando o ireport somente exibir estes dados.
Se vc jah tem prnto consultando via ireport vai dar um traablhao mudar, mas tb acho que iria melhorar em muito seu desempenho.
BINGO.
Dessa forma o resultado final fica muito mais rápido, concorda?!
Att. Jonas
R
rafaelviny
as consultas já estão prontas…
o relatorio chegou para mim resolver os problemas de desempenho… :S
mas descobri que o problema está nos calculos realizados pelas variaveis
vou tentar fazer esses calculos via SQL, pois optimizei o mesmo e ele está voando
R
rafaelviny
acabei os testes…
o desempenho é comprometido por causa dos calculos das variaveis
agora é migrar as operações das variaveis para o sql…
ainda bem que os servidores usam Oracle hahaha
PS: no proximo relatorio eu modifico a forma de processar os dados e faço como vceis comentaram