2

我有一个每月运行 12,000 次的 SQL 2008R2 报告。每次执行平均需要 60-90 秒。

我使用 SQL 已有 12 年了,但我在 2-3 周前才开始这项工作,并且仍在努力解决其中一些 SSRS 性能问题。不用说,为了帮助这份报告,我一直在重新索引所有内容。

这是我的执行日志的图片/转储:

SELECT ReportPath, TimeDataRetrieval, TimeProcessing, TimeRendering, Source, [RowCount] 
FROM ReportServer.dbo.ExecutionLog2
WHERE UserName = '_________' AND ReportAction = 'Render'
ORDER BY timeStart desc

http://accessadp.com/?attachment_id=562

ReportPath  TimeDataRetrieval   TimeProcessing  TimeRendering   Source  RowCount

/CubeReports/Freight Allocation 2954    4402    2039    Live    2348
/RS Reports/Freight Allocation  39954   4087    2380    Live    2348
/RS Reports/Freight Allocation  37718   3948    1888    Live    2348
/RS Reports/Freight Allocation  39534   4317    1937    Live    2348
/CubeReports/Freight Allocation 3257    4206    2422    Live    2348
/RS Reports/Freight Allocation            37517 4164    2402    Live    2348
/RS Reports/Freight Allocation  36127   4151    1986    Live    2348
/RS Reports/Freight Allocation  36415   39888   2569    Live    19048
/RS Reports/Freight Allocation  37544   41644   2071    Live    19048
/RS Reports/Freight Allocation  37970   41003   2187    Live    19048
/RS Reports/Freight Allocation  38057   48085   1885    Live    19048
/CubeReports/Freight Allocation 3030    4558    2056    Live    2348
/CubeReports/Freight Allocation 3534    5232    2422    Live    2348

请注意,我相信我知道“RowCount”的区别是什么。我有一个运行数据集的子报表(这并不重要),我将其删除。

我认为这是性能提高的原因.. 但我已经仔细检查和三次检查 subReports 不再具有其他数据集(这在行数减少中得到了引用)。不幸的是,这并没有转化为处理时间的减少。

我从“RS Reports”下载了报告,并将其部署到“CubeReports”。我没有更改此版本报告的任何其他内容。

我用相同的参数运行它……现在报告“CubeReports”的副本实际上运行速度快了 10 倍。

我只是想不通为什么会这样?我真的需要找到解决方案并将其投入生产。

我已经检查了快照、历史记录、执行缓存......这些都没有打开,这看起来就像两个报告的默认设置......我检查了所有其他选项,但我找不到任何可以解释这一点。

我看到的仅有的三个选项:

  1. Report Builder 3.0 不像 BIDs 那样“编译报告”。
  2. 让 3-4 人同时运行主要报告我正在做测试导致这个问题。(我们有 300 名员工,我真的无法在其他任何地方进行测试,因为人们每天都在运行它)。
  3. 删除报告并重新部署报告,并祈祷这将使其运行速度提高 10 倍

不幸的是,我能够始终如一地复制 10 倍的速度提升,我已经运行了大约 10 次,每次使用相同的参数并获得相同的结果。请记住,只有 1 个 SSRS 服务器,与 1 个数据库服务器相对。相同的存储过程,相同的参数。

此报告的生产副本的性能差 10 倍。将其复制到新文件夹时性能提高 10 倍。

主 ERP 数据库约为 100gb,只有 4 个内核,只有 16gb RAM。SSRS 服务器在虚拟机上,它只有 2 个内核,只有 8gb 内存。

SSRS 服务器上还有一个额外的数据库;它实际上是一个相当大的数据库——但不是大量的活动。另一个数据库(Bartender)只有 9gb 数据/3gb 日志。

4

3 回答 3

0

您可能对文件夹名称这两个词有疑问。尝试在另一个名称中有空格的文件夹中检查。

只是我的 2 美分……但我活着看到了神圣的“我”被宣布为全球性的。

于 2012-10-16T19:45:08.793 回答
0

我发现运行速度快Credentials used to run this report are not stored的报告说,运行慢的报告说Default report parameter values are missing。我要回去仔细检查参数的默认设置。

我的默认参数确实存在差异。我可能会继续删除报告并重新部署它。

于 2012-10-10T21:15:23.087 回答
0

我最近遇到了类似的性能问题。使用 SQL Server Profiler,我跟踪到执行完全相同的查询。它有时会导致大约 1000 倍于其他查询的读取。区别似乎在于查询是作为 SQL 调用还是通过 RPC 调用的。

进一步深入研究,并通过一些试验和错误,我发现我的案例的主要区别在于,ARITHABORT针对不同的连接或用户设置了不同的选项。

不幸的是,我不记得在我的情况下哪个设置是最快的。我没有收到失败的查询,但此选项的状态导致使用不同的执行计划。放置语句SET ARITHABORT ONSET ARITHABORT OFF在我的查询开头使所有内容对齐。ARITHIGNORE 和 ANSI_WARNINGS 是类似的设置,因此您也可以查看这些设置。

于 2012-10-17T18:47:59.817 回答