首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server报告服务减慢TotalTimeDataRetrieval快速ExecuteReaderTime

Server报告服务减慢TotalTimeDataRetrieval快速ExecuteReaderTime
EN

Database Administration用户
提问于 2013-01-14 23:32:53
回答 1查看 2.1K关注 0票数 5

我编写了一份报告,每天由几百个用户执行,数据集的底层存储过程只需几毫秒即可执行。根据ReportServer.dbo.ExecutionLog3表,我注意到TimeDataRetrieval经常显示5-10秒。AdditionalInfo列显示ExecuteReaderTime如预期的几毫秒,TotalTimeDataRetrieval显示5-10秒。我能做些什么来减少每个报表执行的TotalTimeDataRetrieval?

一些更有用的事实。服务器本身有128 GB的RAM用于SSRS和OS,因此它不是内存约束。检索到的行数为1-20行,估计内存使用量在1000 of以下。

我最好的猜测是,打开到数据库的连接大约需要5-10秒。我相信这可以通过ConnectionOpenTime列中的AdditionalInfo属性来证实。它显示5-10秒,ConnectionOpenTime和ExecuteReaderTime之和等于TotalTimeDataRetrieval。也许有一种方法可以强制SQL Server使连接保持较长时间打开?也许工作线程在空闲超过几秒钟后就被杀死了?

EN

回答 1

Database Administration用户

发布于 2022-02-15 21:09:30

哇这是个很老的问题。我相信我已经找到了这个问题的答案,但你得看看它是否对你有帮助。

使用跟踪至少应该让您知道连接时间是慢的,还是查询时间慢.

我按照指示找到了这里

我将在这里列出详细信息,以防链接中断:

首先,将报表服务器配置为打开跟踪

本机模式报表服务器的配置设置您可以从中的“服务器属性”页面打开或关闭报表执行日志记录。EnableExecutionLogging is和Advanced属性。默认情况下,日志条目保存60天。超过此日期的条目将于每天凌晨2:00移除。在一个成熟的安装,只有60天的信息将在任何特定的时间。不能对记录的行数或条目类型设置限制。要启用执行日志记录:使用管理权限启动。例如,右键单击Management图标,然后单击“以管理员身份运行”。连接到所需的报表服务器。右击服务器名称并单击“属性”。如果禁用“属性”选项,请验证您使用管理权限运行。单击日志记录页。选择“启用报表执行日志记录”。要启用详细日志记录:您需要启用前面步骤中描述的日志记录,然后完成以下操作:在“服务器属性”对话框中,单击“高级”页。在用户定义部分中,将ExecutionLogLevel更改为详细。该字段是一个文本输入字段,两个可能的值都是详细的和正常的。

接下来做一些报告。

查询ReportServer数据库,该数据库将具有以下视图:

代码语言:javascript
复制
    Use ReportServer  
    select * from ExecutionLog3 order by TimeStart DESC

最后一列是名为AdditionalInfo的XML列。

对于每个数据集,它将说明连接所需的时间以及获取数据的时间。下面是一个示例:

代码语言:javascript
复制
...
 <Connections>
    <Connection>
      <ConnectionOpenTime>4540</ConnectionOpenTime>
      <DataSets>
        <DataSet>
          <Name>CourseAreas</Name>
          <RowsRead>18</RowsRead>
          <TotalTimeDataRetrieval>4554</TotalTimeDataRetrieval>
          <ExecuteReaderTime>11</ExecuteReaderTime>
        </DataSet>
      </DataSets>
    </Connection>
...

看这里,它花了高达4540毫秒连接到数据库!实际上是本地数据库服务器。只有11 to才能运行查询。有点不对劲..。

因此,现在我转到运行报表服务器的机器来配置它:http://localhost/reports

我浏览了主页->相关文件夹->相关数据资源。ConnectionString有本地机器的IP地址(甚至不是它的主地址.)我将其更改为"localhost",并测试了连接。是瞬间的。可能使用内存连接而不是TCP/IP,我不确定。

在进行更改之前,按下大约需要5s才能返回,就像跟踪中报告的那样。我应用了更改,测试连接立即返回。在单击Apply之后,我验证了我的报告现在正在返回不到一秒钟的时间。一些建立了三个数据集连接的报告已经占用了15s或更长的时间,现在它们应该是次秒级的。

问题解决了!

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/32918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档