1

我们刚刚将一份报告从 Cognos reportnet 迁移到 Cognos 8.4,现在报告太慢了。

该报告只有一个嵌套在列表中的交叉表,其中包含期间/季度/半年/年的汇总

报告设计:

  • mainqueryitem(queryitem)通过手动sql获取数据。
  • 手动 sql 有 4 个查询依次联合。
  • 所有 4 个查询只是从连接的不同表中选择(没有组/排序/过滤器)。
  • PlanningLevel (queryitem) 从 mainqueryitem 获取数据。(eg: if mainqueryitem.name = 'Black' then mainqueryitem.quantity else null. PlanningLevel的所有DataItems都使用上述格式)
  • 报告页面由嵌套在列表(分段)内的交叉表组成。
  • 该列表与主查询相关联。
  • 交叉表与计划级别相关联。
  • 交叉表还包含聚合。
  • 提示页面包含一个多选列表。

即使对于较小的提示值,报告也很慢。

然后我将 PlanningLevel 查询项的属性“OverrideDimInfo”更改为“否”,从报告网迁移时已经有一些 DimensionInfos(不知道它是什么)

然后,报告运行得更快,没有更少。标准(<1 分钟)。(快 400 倍)但更多的是没有。选项/标准(> 2),报告仍然较慢。(最长 3.5 小时,选择最大的报告-所有标准)

在 toad 中运行最大报告的 mainqueryitem sql 需要不到 5 分钟的时间来执行。最大的报告需要 3.5 小时,在 reportnet 中只需几分钟即可运行。

任何想法如何提高性能?

4

1 回答 1

2

我在 8.4 中观察到的一件事是,当使用嵌套在列表对象中的交叉表对象并通过主从关系连接在一起时,您的主查询(与列表相关联)应该尽可能有限和简单。我不知道你的情况,但通常包含主查询的列表的目的是根据维度属性将交叉表结果分组,而详细查询更复杂,并且还包括事实信息。在这种情况下,Cognos 不会执行 2 个查询来提取 Cognos 服务器上的所有数据和格式(正如人们所期望的那样),而是为每个分组触发一个单独的查询。有时,您可以通过尽可能简化主查询来提高性能。很多时候人们只会复制详细查询,将其重命名为 master 并加入回详细查询而不进行任何修改。摆脱主查询中不需要的任何内容。您的情况可能并非如此,但我们在报告中多次观察到这种行为,调整主查询通常会有所帮助。

根据报告的构建方式,使用列表部分时可能遇到的另一个问题(不确定这是否是您所说的分段)是 Cognos 有时会为每个部分触发重复查询。您可以通过从菜单中选择“工具 > 显示生成的 SQL/MDX”来查看执行了多少查询。

于 2010-11-24T19:27:03.053 回答