s-s-rS - 将报告复制到新文件夹将速度提高 10 倍

Posted

技术标签:

【中文标题】s-s-rS - 将报告复制到新文件夹将速度提高 10 倍【英文标题】:s-s-rS - copying report to a new folder increases speed 10x 【发布时间】:2012-10-10 20:19:48 【问题描述】:

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

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

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

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 倍。

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

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

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

    Report Builder 3.0 没有像 BID 一样“编译报告” 可以。 让 3-4 人同时运行主要报表 我做测试的时间导致了这个问题。 (我们有 300 员工,我真的无法在其他任何地方进行测试,因为人们跑 每天都这样)。 删除报告并重新部署 报告,并交叉手指说这会让它运行 快 10 倍

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

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

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

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

【问题讨论】:

报表中是否嵌入了数据源?如果不是(共享数据源),两个多个版本之间的数据源是否相同?特别是凭证。上周我遇到了一个不同之处,因为 SQL 身份验证的连接在某些选项与 Windows 身份验证的连接有不同的默认值。 您的数据集查询是嵌入的还是使用存储过程? 我用的是sprocs,数据源是一样​​的。。报告是一样的,我只是复制到另一个文件夹,运行速度快10倍。 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

我发现运行较快的报告显示为Credentials used to run this report are not stored,运行缓慢的报告显示为Default report parameter values are missing。我将返回并仔细检查我的默认参数。

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

【讨论】:

注意,删除报告并重新部署并不能解决问题。 修复默认参数的差异并没有解决问题。 我认为这回答了我对原始问题的评论。我会找到我在一两周前追踪的选项并发布答案:我遇到了类似的性能问题。

以上是关于s-s-rS - 将报告复制到新文件夹将速度提高 10 倍的主要内容,如果未能解决你的问题,请参考以下文章

导出到 excel 时 s-s-rS 报告颜色发生变化

下载所有 s-s-rS 报告

具有多列内容和固定维度的 s-s-rS 报告

s-s-rS - 将外部 excel 文档与生成的报告合并?

将报告从报告数据库复制到另一个

如何将具有链接报告的 s-s-rS 报告导出到 Excel