【来自商业智能学院 SSRS 2012 Metro UI 高端报表视频教程】案例7:报表负载分配

0
问题来源:  SSRS 2012 Metro UI 高端报表视频教程【全国首家】 http://www.hellobi.com/course/15老师:

您好,基于这节课的内容,让我想到了关于BI负载的问题。

按性能最优的角度考虑,应该将所有的业务及数据处理操作,放在数据库引擎中。但我想知道,在什么情况下,把处理放在展现层合理,什么情况下,放在DB处理合理,还请老师指点一下。再次感谢精彩的讲解。
已邀请:
0

梁勇 - 天道酬勤、上善若水。爱好商业智能 2015-03-23 回答

BIWork老师回复 :
 
我经手的基于数据库的 SSRS 报表估计不下500张,在大部分设计不是非常复杂的前提下,基本上出现性能问题的报表可以肯定的是:

1. SQL Query 返回了过多的查询结果

2. 聚合的部分放在了 SSRS 报表上,而不是 SQL Query 里

对于 1, 返回过多的结果首先就是从数据仓库抓数据到 Report Server 中这个过程就慢。

对于 2, 大量的聚合放在 SSRS 报表上,本身就是数据量大,再聚合,在渲染展现,这个过程会造成更慢的结果。


所以越少的结果集返回,基本上到了 SSRS 报表中展现就非常快了。同样的报表,先查询再在报表上聚合可能是10分钟,但是先聚合再展示可能不到5 秒,这是我们项目中碰到过的情况,原理就是这样的。

如果数据仓库服务器压力比较大,不得已的情况下只能将 Report Server TempDB 的初始空间和增长空间放大比如1G,这样聚合的时候是在 TempDB 中完成的,需要大量的计算使用临时数据库空间。

最优原则:返回少量的结果集,把聚合放在源端数据仓库,调优 SQL 该加索引的就加索引。一旦这样优化完,SSRS 报表的效率可以提高非常多。

要回复问题请先登录注册