1

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

24 小时内的查询本身会在约 20 秒内返回。时间的平衡是旋转和生成报告。

你有什么建议吗?

谢谢!

4

2 回答 2

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 有关,则尝试重写查询以减少报告的数据,并查看可能的设计问题以查看是否有任何问题适用。

于 2013-08-06T03:36:44.947 回答
0

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

看看这些加快性能的技巧。 故障排除报告:报告性能

于 2013-08-05T14:03:13.957 回答