以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 Java/Eclipse 』 (http://bbs.xml.org.cn/list.asp?boardid=41) ---- 报表性能优化系列专题三——数据集缓存优化 (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=79730) |
-- 作者:niceman007 -- 发布时间:1/29/2010 10:57:00 AM -- 报表性能优化系列专题三——数据集缓存优化 通常情况下,我们首先需要对sql进行优化以保证数据集中不包含不必要的数据,比如上一节"SQL优化数据集"所讲到的尽量不要使用"select * from"和"尽量在sql里面过滤"。通过sql优化,我们往往能够得到最精简的数据集,满足大部分报表的需求。 但是,对于一些大数据量的报表来说,仅仅优化SQL是不足够的,对于这种报表,因为他所要展现的数据量本身就很大,所以即使sql精简优化后,仍然有很多条记录,有时候如果不缓存这些数据,那么频繁的数据库连接和sql查询是数据库所承受不了的,并且取数速度的降低会极大的降低报表执行速度。因此,FineReport提供可选择的方案让你来缓存这些数据,缓存分为内存缓存,和磁盘缓存。顾名思义,内存缓存就是把数据缓存到RAM中,从而再次取数时就不需要从数据库取,而是直接从内存里面拿。内存缓存是效率很高,取数速度快,但是重要的缺点是占用内存空间资源,如果把大量的记录,比如几十万条都缓存到内存中去,就有可能造成OutOfMemory抛错。因此在数据量超过内存缓存限制的情况下,我们采用空间资源更大更便宜的硬盘缓存,但是硬盘缓存会造成取数效率下降,增长时间。因此,在大数据量下,合理平衡分配内存缓存和磁盘缓存往往对性能有着至关重要的影响。一个重要的原则是,内存缓存空间资源有限,但效率很快;硬盘缓存空间资源几乎没有限制,但效率底,往往很慢。 下面是设置数据集缓存的界面: http://www.finereport.com/forumimages/a60.png
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
31.250ms |