可以将共享数据集的查询结果复制到缓存中,以便为多个报表提供一致的数据,并改进数据集查询的响应时间。 与报表一样,可以将共享数据集配置为首次使用或指定计划进行缓存。
共享数据集可以包含在多个报表中,也可以作为组件定义的一部分包含在一起。 通过缓存共享数据集,可以为使用该数据集的所有报表提供一组一致的数据,并减少数据集查询针对外部数据源运行的次数。
以下列表提供了何时缓存共享数据集的示例:
查询运行需要大量时间。
查询需要参数,但大多数时候,参数组合的数量很小。 每个组合都会创建缓存的查询结果。
查询在一天、周或月的可预测时间运行。
查询作为报告中共享数据集引用的结果运行,该报告通过电子邮件发送,而此时许多人可能会在短时间内点击该链接。
以下列表提供了何时不缓存共享数据集的示例:
查询结果必须始终包含最新的数据。
查询能快速运行。
查询不经常运行。
查询采用参数,参数组合数很大,并且没有组合比另一个参数更可能。
共享数据集所基于的数据源具有提示或 Windows 集成凭据。
共享数据集筛选器或查询包含一个表达式,其中包含对全局集合用户的引用。
如果用户选择与为缓存结果集指定的默认值不同的报表参数值,则数据集查询会主动运行,并且缓存的结果不用于该查询。
缓存共享数据集
若要为共享数据集启用缓存,必须在共享数据集上选择缓存选项。 启用缓存后,共享数据集的查询结果将首次复制到缓存。 如果共享数据集具有参数,则每个参数组合都会在缓存中创建一个新条目。
虽然特定参数组合的查询结果位于缓存中,但启动用于处理的每个报表以及包含对这些参数值的共享数据集的引用都将使用缓存的数据。
可以指定在缓存中保留数据在过期之前的时长。 有关详细信息,请参阅缓存页、共享数据集(报表管理器)。
预加载缓存
可以通过创建缓存刷新计划来预加载缓存。 您可以使用缓存刷新计划,通过特定于项的计划或共享计划来指定刷新缓存的频率。 为了避免同一项的多个缓存条目,指定的计划应该有足够的时间来对外部数据源执行查询处理。 例如,如果查询需要 20 分钟才能运行,则刷新计划应大于 20 分钟。 有关更多信息,请参见 Schedules。
若要为共享数据集创建缓存刷新计划,需要满足以下条件。
必须启用共享数据集进行缓存。
共享数据集所依赖的共享数据源无法使用提示输入凭据或 Windows 集成凭据。
如果共享数据集具有参数,则必须为未标记为只读的每个参数指定静态默认值。 只读参数将始终使用默认值。 若要为多个参数组合缓存共享数据集,必须为每个值组合创建单独的缓存刷新计划。 参数不能包含对其他数据集的引用。
每个缓存刷新计划仅与一个共享数据集或报表相关联。
必须对共享数据集具有 ReadPolicy 和 UpdatePolicy 权限。
缓存刷新计划适用于共享数据集和报表。 有关详细信息,请参阅缓存刷新选项(报表管理器)。
导致缓存过期的条件
以下条件可能导致共享数据集缓存无效。
计划条件过期。 缓存超时或到达过期时间。
共享日程被删除。
对共享日程的更改。 共享计划可以暂停,这也会影响缓存过期的时间。
共享数据集的查询定义会更改。
共享数据集所依赖的共享数据源的凭据。
共享数据集的缓存选项更改。
共享数据集更改的只读参数的默认值。
属于共享数据集定义更改的筛选器。
共享数据集将从报表服务器中删除。 删除共享数据集时,也会删除关联的缓存副本和缓存刷新计划。
对共享数据集的缓存刷新计划的更新不会影响已处理的报表。 更新缓存刷新计划仅影响引用共享数据集的报表的未来启动。