生成一个100万条数据的报表要多长时间? - Web报表系统的性能问题是很多用户关心的。本文将讨论:性能是受什么影响的,如何提升Web报表系统的性能,在性能方面会出现的局限是什么。
一个参考数据:某报表系统,使用1台P4 2.0GCPU, 512M内存的PC进行测试,出现了内存崩溃。就意味着报表完全打不开。
实际上,这个数据说明不了什么,因为报表的样子,数据的情况,相关环境都是不一样的,很难进行什么比较。但是这里面真正需要的:是弄明白性能是受什么影响的,如何提升Web报表系统的性能,提升报表系统性能的方法的局限性。
影响Web报表系统性能的,最主要的可能是两个方面,一个是报表与数据的关系,另一个是服务平台的计算能力。
先看前一个,报表与数据的关系。如果传到报表的数据大量是多余的数据,或者提取数据的过程中数据库的计算过于复杂(比如复杂的视图、存储过程),则肯定会影响性能。反之,如果报表模型先进,需要传过来的的数据量少,如果不需要复杂的预计算过程,则肯定报表系统性能会比较高。
再看服务平台(计算平台),简单讲方法就是:CPU,内存最直接影响性能。
相应地,提升性能的方法也很简单,一是采用更合理的报表设计,或者说采用在这方面有优势的报表系统,二是增加CPU或采用能力更强的CPU,以及增加内存。
事实上,为了提高报表性能而提升报表服务器的大型机的CPU,内存 是不实际的。报表只是一个展现工具,不是关键应用。报表慢的原因主要与数据库取数和sql语句有关,如果在设计中没有解决这样的问题,换再快的CPU,加再多的内存,也没有用。
这里笔者只所以举例某报表系统,就是因为该报表在设计方面的问题,造成数据库取数性能上的瓶颈。
由此可见,如果web报表工具在数据库中取数方面做的不好,是根本不可能应对日益庞大的报表数据的。