当您将数据网关或远程数据连接器与 Oracle Analytics Cloud 结合使用时,每次执行查询的持续时间会小幅增加。
当您运行一个报表时,您不会注意到额外的持续时间,因为它不到 0.3 秒。但是,每当有人登录时,如果要运行许多(数量取决于您的性能要求)初始化块,就可能会遇到性能问题,因为需要以串行方式执行初始化块查询。本主题建议了减少会话初始化块数量的方法。
对初始化块使用延迟选项无法修复该问题,因为当您打开第一个仪表盘页时会执行初始化块。
这是使用 Oracle BI Applications 时出现的问题,因为此时要运行的初始化块超过 200 个。对于 Oracle Analytics Cloud,要避免这些性能问题,最好的方式是减少初始化块数量。
Oracle 推荐以下可减少会话初始化块数量的方法:
例如,在 Oracle BI Applications 中,禁用引用了不再使用的 Oracle BI Applications 模块的初始化块。
row_wise
初始化块合并,并通过在它们的查询之间使用 UNION ALL
来返回相同的数据类型。
例如:
Init block 1: query1 Init block 2: query2 Merged init block: query1 union all query2
dual
或 W_DUAL_G
选择硬编码值的所有初始化块,并将该硬编码值放在对应变量的默认初始化程序中。select
语句中。HIDE
是这些变量的当前值),或者您不使用 Oracle Human Capital Management 作为 Oracle BI Applications 数据源(存在 100 个初始化块,就像在 Oracle BI Applications 中一样):
HR xxx Attribute yyy
row_wise
初始化块并使用相同连接池的所有其余初始化块合并在一起。例如:
Init block 1 基于 query1:select colA from tableA where…。
Init block 2 基于 query2:select colB from tableB where…。
您可以使用查询将它们合并到单个初始化块中,例如:
Select MAX(colA), MAX(colB) from ( select cola as cola, null as colB from tableA where…. Union all Select null, colB from tableB where…) tmp
您可以根据在一个查询中从同一连接池检索所有变量的需要,进行任意数量的联合。
实施或维护这些并不容易,并且在创建查询以及将所有变量分配到单个初始化块时存在出错的风险。
如果仔细实施和维护初始化块查询和变量,可以显著缩短登录和显示第一个仪表盘页所用时间。