影响报表性能的几个因素

影响报表性能的几个因素

ID:38275844

大小:198.19 KB

页数:4页

时间:2019-06-01

影响报表性能的几个因素_第1页
影响报表性能的几个因素_第2页
影响报表性能的几个因素_第3页
影响报表性能的几个因素_第4页
资源描述:

《影响报表性能的几个因素》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、影响报表性能的几个因素在软件项目中,用户常常会抱怨报表查询特别慢,甚至慢的不能忍受。这给开发人员带来巨大的压力。那么,报表的处理过程如何划分?处理过程中有哪些环节容易出现性能问题?如何优化这些环节呢?我们先看一下报表处理过程中的各个环节划分,如下图:报表处理过程示意图选择报表输入参数报表解析数据计算数据传输报表生成查看报表)(UU1点击查看U3查看报表层U2输入参数户报表结果用)(RR1报表引擎R2生成可视层表解释报表化报表报D2JDBC传输)数据(DD1执行数据层据计算数图1:报表处理过程示意图如图所示,报表处理过程为:1、用户选择报表输入参数后,报表引擎会根据报表模板和输入参

2、数来解释报表,并将数据计算和读取请求发送给数据层。2、数据层负责读取、计算和返回数据。数据层一般都是传统数据库:Oracle、DB2等。3、数据层通过JDBC等接口将结果数据传输给报表工具。4、报表工具将接收到的数据,按照报表模板的样式生成可视化报表展现给用户。上述这些报表处理过程中,网络、报表层和数据层的各个环节都有可能成为性能的瓶颈。值得商榷的是,图1中“R2生成可视化报表”这个环节一般也会包含一些数据计算过程:从数据层返回的数据还要经过进一步加工才能满足报表的要求。特别是具备编程能力的报表工具,在这个环节也会消耗一些计算时间。例如:BIRT的自定义脚本、润乾报表的自定义数据

3、集、格间计算。因此,我们可以把这个环节分开,更有利于分析影响报表性能的因素。分开后如下图:报表处理过程示意图选择报表输入参数报表解析数据计算数据传输数据计算报表生成查看报表)(UU1点击查看U3查看报表层U2输入参数户报表结果用)(RR1报表引擎R2数据再次R3生成可视层表解释报表计算化报表报D2JDBC传输)数据(DD1执行数据层据计算数图2报表处理过程示意图(细分)在图2中,标黄色的部分,是影响报表性能的主要因素。也就说,报表引擎对报表的解释和生成可视化报表的环节一般都不会成为性能问题的主要因素,最容易造成报表慢的,是数据计算和JDBC传输。因此,针对数据计算和JDBC传输所

4、做的优化往往事半功倍。划分好了报表处理的环节,需要分析一下图2中黄色部分造成性能问题的原因:一、数据层“D1执行数据计算”环节。在实际项目中,报表开发人员往往需要编写一些很长很复杂的SQL语句(或存储过程),来为报表计算数据。报表开发人员会发现,使用SQL(或存储过程)实现复杂统计运算非常困难,特别是与序和集合有关的运算,如计算每月销售额都排进前10名的产品、连续五天上涨的股票等为报表准备数据的SQL过于复杂,可能长达数十行甚至数百行。因为难以完整指定数据库的执行路径,所以复杂SQL执行起来一般都比较慢。报表开发人员想人工优化这些复杂SQL的时候也会发现很难入手。这是“D1执行数

5、据计算”环节影响报表性能的主要因素。例子:计算每个月的销售额都在前10名的客户。selectClientfrom(select*from(selectB.*,row_number()over(partitionbymonthorderbySumValuedesc)rownfrom(selectto_char(SellDate,'mm')month,Client,sum(Quantity*Amount)SumValuefromcontractwhereSellDate>=to_date('2012-01-01','yyyy-mm-dd')andSellDate<=to_date('

6、2012-12-31','yyyy-mm-dd')groupbyto_char(SellDate,'mm'),Clientorderbymonth,client)B)Cwhererown<=10)DgroupbyClienthavingcount(Client)=(selectcount(distinct(to_char(SellDate,'mm')))fromcontractwhereSellDate>=to_date('2012-01-01','yyyy-mm-dd')andSellDate<=to_date('2012-12-31','yyyy-mm-dd'))二、数据层“

7、D2JDBC传输数据”环节。传统主流数据库提供的JDBC驱动在将数据流转换成Java对象时的效率很低,但又不可避开,在大量数据时就会感觉速度非常慢。虽然数据库的版本不断升级,但是这个问题一直都没有解决好。所以,对于较大源数据量报表来说,JDBC经常也是报表变慢的主要因素。三、报表层“R2数据再次计算”环节。1、很多报表工具会把“R2数据再次计算”和“R3生成可视化”两个环节一并处理,数据计算的时候附带着很多显示属性(字体、颜色、格子大小等等),会一定程度上降低计算速度。2、报表工

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。