【发布时间】:2011-12-22 13:41:21
【问题描述】:
我有一个存储过程,它在 SSMS 中最多使用 2 个核心在 10 秒内返回大约 50000 条记录。使用存储过程的 SSRS 报告需要 20 分钟,并且会在整个时间内最大化 8 核服务器上的处理器。该报告相对简单(即没有图表、计算)。报告似乎不是问题,因为我将 50K 行写入临时表,报告可以在几秒钟内显示数据。我尝试了许多不同的想法来测试每次更改存储过程,但将原始代码保留在单独的窗口中以恢复。在对存储过程进行一次 Alter 之后,回到原始代码,报表和服务器利用率开始快速运行,可与单独存储过程的性能相媲美。现在一切都很好,但我想深入了解造成这种情况的原因,以防它再次发生。有什么想法吗?
【问题讨论】:
-
表上的索引?过时的执行计划?统计数据更新了吗?你有 SqlProfiler 日志吗?这将在未来有所帮助..
-
只是渲染还是渲染为PDF?
-
Dan - 只是将标准报告呈现到网络上。 Rene - 在故障排除期间我没有运行 SqlProfiler。我已经在本地查询上运行了它,但是我需要做些什么来记录 SSRS 数据库调用吗?我也没有深入研究 SSRS 执行日志,但如果其他故障排除不起作用,我会考虑它。如何检测过时的执行计划?
-
您的 SSRS 服务器和数据库服务器是同一台机器吗?我问是因为我发现 SSRS 经常在处理大型数据集时表现不佳即使报表服务器与数据库位于不同的计算机上 - 这有助于将问题缩小到 SSRS,而不是相关查询。似乎微软更喜欢将 SSIS 用于大数据提取,而不是 SSRS。
-
您的报告中是否包含任何深入链接?我们已经看到这些导致大量临时数据被填充到报表服务器的数据库中。
标签: performance sql-server-2008 reporting-services ssrs-2008