在SSRS中用缓存提高报表速度

日期: 2009-10-29 作者:Roman Rehak翻译:曾少宁 来源:TechTarget中国 英文

由于报表需要在显示结果之前处理大量的数据,因此报表应用会变得很慢。SQL Server Reporting Services (SSRS)特性中内置的报表缓存特性可以帮助加快报表执行速度并降低报表服务器的负载。   在设计一个报表时,需要注意的是处理数据的量有多少。这通常受到用户所选择的参数以及他们最常查看报表时选择的参数的影响。

  当一个报表进程运行时,SSRS首先执行数据查询,然后以特定的格式渲染报表。   然而,如果启用了报表缓存,SSRS会存储来自数据库的报表第一次执行后返回的报表布局和数据集。因此,当报表再次执行时,已经有一个缓存的拷贝了,只需要将报表从缓存取出然后渲染到设备指定的……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

由于报表需要在显示结果之前处理大量的数据,因此报表应用会变得很慢。SQL Server Reporting Services (SSRS)特性中内置的报表缓存特性可以帮助加快报表执行速度并降低报表服务器的负载。

  在设计一个报表时,需要注意的是处理数据的量有多少。这通常受到用户所选择的参数以及他们最常查看报表时选择的参数的影响。

  当一个报表进程运行时,SSRS首先执行数据查询,然后以特定的格式渲染报表。

  然而,如果启用了报表缓存,SSRS会存储来自数据库的报表第一次执行后返回的报表布局和数据集。因此,当报表再次执行时,已经有一个缓存的拷贝了,只需要将报表从缓存取出然后渲染到设备指定的格式。

  SSRS的主要优点是它在存在缓存报表时不需要调用数据库查询。查询执行是大多数报表中最耗时的部分,但是通过报表缓存,报表的运行时间可能从几分钟减少到几秒钟。

  使用报表缓存

  报表缓存特性在默认情况下是关闭的。我们可以在Report Manager 的“Execution ”页面的“Properties ”选项卡中打开报表缓存,如图1所示。

  报表缓存可以设置打开一定的分钟数,或者调度在一段时间后过期。

  第一个选项是更适合用于报表缓存,但是对于经常变化的数据可能需要进行一定频率的刷新。这个频率是报表指定的,可以从几分钟到几天。

  另一个过期选项可以是报表指定的调度或共享的调度。例如,如果一个数据仓库是在凌晨到5 a.m.之间加载的,那么共享调度可能在每天的5 a.m.创建,而缓存可以调度在这个时间过期。这样用户可以在每天上午查看到刷新的缓存报表。

  另外重要的一点是报表通常都有参数,而数据库返回的数据取决于这些参数值,SSRS必须缓存每一个不同参数组合的报表结果。

  例如,如果有一个年月参数(Year and Month),输入参数“January 2009” 执行的第一个报表会比较慢,但是后续的执行会比较快。当选择“February 2009”时,报表会再次执行数据库查询,这也会需要较长时间。但是一旦报表被缓存后,后续的执行又会变快。

  缓存是基于报表的,这表示任何用户第一次执行一个参数组合时都会缓存报表给所有用户使用。这也是为什么报表只在数据源使用存储的身份认证信息时才会被缓存的原因之一——认证信息可以是SQL Server登录帐号或Windows帐号。

  报表缓存最适用于没有参数的报表,或只有少数参数组合的报表。而对于带有用户可以任意选择一个或多个日期的日期时间参数报表作用就不大。解决这个问题的最好方法是给这些参数赋一个最可能使用的值。另一个方法是编写一个报表渲染应用,并使用SOAP API渲染所有可能的参数组合来缓存报表。

  报表快照

  在报表第一次执行时,除了缓存,我们还可以设置从一个报表快照中渲染报表(上面图1的底部)。

  同样,我们可以创建基于报表的调度或共享调度。我们也可以选择通过点击“Apply ”按钮来生成快照,虽然实践中这种方式一般只针对于高度静态的报表。当调度时间到达时,SSRS将会执行报表并存储报表结果。

  快照和缓存的不同在于快照是由SSRS基于调度生成的,其中缓存的备份是报表在用户或外部应用第一次生成时创建的。

  快照消除了第一个报表用户的“等待时间”,但它们也有一个主要的局限性:如果没有参数,或者所有参数都有默认值,一个报表只能配置快照执行。

  生成一个快照需要使用默认的参数。当报表被查看时,Report Manager将会显示所生成的快照的参数值。然而,它同时也会禁用参数,我们不能够修改它们的值。换句话说,如果报表有参数并且启用了快照,就无法使用非默认参数值来执行报表查询了。

  因此,报表快照只有在报表没有参数时才有效,或者用户只能接受在一段时间内只显示报表的默认值。

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐