|
10万条的报表要多长时间-Web报表工具的性能问题探讨
生成一个10万条数据的报表要多长时间? - Web报表工具的性能问题是很多用户关心的。本文将讨论:性能是受什么影响的,如何提升Web报表的性能,在性能方面会出现的局限是什么。 一个参考数据:润乾报表,使用1台P4 2.0GCPU, 512M内存的PC进行测试,大约时间是1分钟。 实际上,这个数据说明不了什么,因为报表的样子,数据的情况,相关环境都是不一样的,很难进行什么比较。 这里面真正需要的,是弄明白性能是受什么影响的,如何提升Web报表的性能,提升性能的方法的局限性。 影响Web报表性能的,最主要的可能是两个方面,一个是报表与数据的关系,另一个是服务平台的计算能力。 先看前一个,报表与数据的关系。如果传到报表的数据大量是多余的数据,或者提取数据的过程中数据库的计算过于复杂(比如复杂的视图、存储过程),则肯定会影响性能。反之,如果报表模型先进,需要传过来的的数据量少,如果不需要复杂的预计算过程,则肯定性能会比较高。 再看服务平台,简单讲方法就是:CPU,内存最直接影响性能。 相应地,提升性能的方法也很简单,一是采用更合理的报表设计,或者说采用在这方面有优势的报表工具,二是增加CPU或采用能力更强的CPU,三是增加内存。 接下来说说这些方法的局限性,设计方面的就不在这里讨论了,主要谈谈就服务平台方面的: 1、更多、更强的CPU,更多的内存,在PC Server范围内还简单,如果需要UNIX服务器,则实际上除了纯JAVA的报表工具外,很多其他报表工具在兼容性上就会出现问题,其中不少声称能支持UNIX的,实际未必能做到或真的做过。 2、用户真正关心的性能,不在于一张报表特别特别大,而在于有很多比较大的报表。这时,尤其是在使用PC Server的时候,很可能就需要使用服务器集群与负载均衡技术。对于纯Java的报表工具这个是与生俱来的,但对独立报表服务器则问题就比较大了。 3、更有必要深入探讨一下控件方式,除了部署方面的麻烦外,控件方式(即报表计算是在控件内进行的)从根本上是与服务器计算、与B/S应用模式背道而驰的。我们在这里不讲空概念,就认真分析一下道理。首先你所谓的加或升CPU,加内存,对控件方式在服务器端做是没用的,你需要在客户端加。如果你有100个用户... ... 更何况,真要是大报表,除非你把PC弄得象个服务器似的,否则可能就出问题了。同时,要考虑网络传输。不论报表是1万条还是10万条,看的人都是1页1页看,如果是在服务器端计算,算好后,传到浏览器的总是正在看的那一页,而对控件方式,则是要把这些数据一股脑地传给客户端的控件(如果它能承受得住的话)。所以,对控件方式,是无性能可言的。 |
|