提高Microsoft Reporting Services中的列分组速度

时间:2013-08-05 13:40:05

标签: reporting-services pivot

我正在做一个大型应用程序,我在报告中使用列分组。不幸的是,性能非常缓慢,我的客户抱怨它。例如,如果他们运行24小时的报告,则需要大约10分钟才能返回(大约800个显示页面的数据)。如果他们运行了一个月,它可能永远不会回来!

24小时的查询本身在~20秒内返回。时间的平衡是转动并生成报告。

你对我能做什么有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

检查以确保您在报告端而不是查询端进行排序。这可以加快速度。对报告组进行排序或按聚合值排序在报告中比在查询中简单得多,并且通常也更有效。

看看这些提高性能的技巧。 Troubleshooting Reports: Report Performance

答案 1 :(得分:0)

Reporting Services在创建报告时有三个阶段:

  • 数据检索(执行查询以返回数据集结果)
  • 处理(根据以下内容对返回的数据进行分组和聚合) 报告布局)
  • 渲染(生成所选输出,例如 HTML,Excel)

如果您的查询在~20秒内返回数据,但报告需要10分钟才能呈现,那么主要问题在于报告处理的速度(呈现很少是性能瓶颈),正如您正确假设的那样。提高性能的最佳方法是通过重写您的查询以在那里进行聚合来尽可能多地将聚合卸载到源数据库。与Reporting Services相比,数据库平台在聚合数据方面通常要快得多。理想情况下,您希望返回报告所需的最少数据量,以便尽可能少地处理。

如果您有权访问ReportServer数据库,请运行此查询以确认瓶颈在哪里:

SELECT ItemPath, Format, TimeStart, TimeEnd, TimeDataRetrieval, TimeProcessing, TimeRendering, [Status], ByteCount, [RowCount] 
FROM ExecutionLog3
WHERE ItemPath LIKE '%My Report Name%'

TimeDataRetrieval,TimeProcessing和TimeRendering可以让您清楚地了解问题所在。如果问题出在TimeProcessing上,请尝试重写查询以减少报告的数据,并查看possible design issues以查看是否有任何适用。