最近开发hr系统,需要用HQL语句导出excel(1500行*100列),一开始5-6行/s,执行至500行时3行/s,到1000行1行/1s。
一开始认为是jxl写入速度越来越慢,去掉写入excel,依旧是慢。
然后怀疑到hibernate的查询上,每一行都涉及到6,7条hql语句。
但不明白为什么查询会减速执行,而不是匀速?
[b]问题补充:[/b]
可以排除数据库执行sql语句的因素。
hibernate会不会出现类似问题。
[b]问题补充:[/b]
数据库为Mysql,c3p0连接池,问题应该不会出在数据库连接上
[b]问题补充:[/b]
耗时在Hibernate执行查询上
[quote]去掉写入excel,依旧是慢[/quote]
[b]问题补充:[/b]
部分改为sql语句执行查询,速度有所提升,但全部改为sql有工作量
[b]问题补充:[/b]
先在开发环境(笔记本:xp/单核1.86GHZ/1G内存),用时5分钟
然后生产环境(服务器:2003server/4核2.33GHZ/4G内存),用时10多分钟
同样的数据库,同样的tomcat容器
速度整好差了1倍。想象中高配环境比低配环境要快才是,可结果诡异。
执行别的操作服务器还是比笔记本快好多,不知道为什么一干大活就掉链子呢?甚是诡异!
[b]问题补充:[/b]
服务器上的tomcat内存设置参数调整了一下,速度正常了,大概5分钟左右,说明跟jvm控制内存关系很大。
另改为了分页式的查询,每200个查询一次,速度有所提升,但不明显,服务器上可以提升半分钟。
[b]问题补充:[/b]
[quote]我们当初有一个功能,一次载入1.5W个对象,时间是2分钟左右,你10多分钟很有问题。[/quote]
不知您的导出有多少行多少列?每一行是否又涉及多个子查询?