优化查询处理
学习目标
通过选择最有效的处理模式来改进查询性能
SAP BW/4HANA Analytic Manager





OLAP 引擎一直是 SAP BW 中处理所有查询的关键组件。处理始终在 ABAP 运行时中执行。自从 SAP HANA 成为驱动 SAP BW/4HANA 的数据库以来,引入了一个名为 Analytic Manager 的新组件。它充当“中间人”,为查询运行时的处理定义最高效的执行路径。这意味着它同步 SAP HANA 平台上的处理与 SAP BW/4HANA ABAP 应用服务器上的处理,目的是尽可能将更多计算下推到 SAP HANA,以获得最佳性能。
BW Query Designer 是 Analytic Manager 的设计工具。在 SAP BW/4HANA 中,经典的 OLAP 操作不再完全由 ABAP 应用层处理,而是越来越多地由 SAP HANA 的计算引擎执行。Analytic Manager 将现有的 SAP BW OLAP 查询转换为 SAP HANA 优化脚本,这些脚本使用 SAP ABAP 函数来实现下推处理,从而利用 SAP HANA 的性能能力。这包括对高级 SAP BW 功能的支持,例如计数和货币关键值的异常聚合、层次结构、受限关键值,或非累计关键值(库存和人数场景等)。
运行时优化器
系统始终会检查相关 InfoProvider 能否在 SAP HANA 中执行操作。新的 运行时优化器(Runtime Optimizer) 的任务是选择最合适的操作模式。当你执行查询时,优化器会决定该查询是以较少的代码下推(否定决策)执行,还是使用增强的专家模式(肯定决策)执行。如果使用增强的专家模式,你在数据库中会得到更小的结果集(DBTRANS)。这会缩短 Analytic Manager 中结果集的处理时间。另一方面,增强的专家模式会带来额外的设置成本。因此,只有当收益(数据库返回的结果集处理时间更短)大于额外的设置成本时,才值得使用增强的专家模式执行查询。
运行时优化器会为肯定决策 [EST_DBTRANS_POSITIVE_DECISION] 和否定决策 [EST_DBTRANS_NEGATIVE_DECISION] 估算数据库中结果集的行数。该估算只包含那些在肯定决策和否定决策下执行方式不同的查询部分。估算会考虑全局筛选器,并计算出一个缩减因子,表示在肯定决策下数据库中的结果集缩小了多少:[EST_DBTRANS_NEGATIVE_DECISION] / [EST_DBTRANS_POSITIVE_DECISION]。
提示
你可以查看 SAP 注释 2063449,了解哪些 BW OLAP 功能在哪个 SAP BW 和 SAP BW/4HANA 版本中被下推。
SAP HANA 中的操作:运行时模式
相对运行时模式
SAP BW/4HANA 引入了所谓的 Runtime Optimizer 概念,从而为 SAP HANA 中的操作 带来了新的相对运行时模式。这些模式的目的是以更精细、更灵活的方式管理 SAP HANA 中的处理(即代码下推)。它们取代了以前可用的绝对模式。
J 防御型:该模式对应专家模式 (3)。
M 标准型:优化器决定 BW 查询是以专家模式 (8) 还是 (3) 执行。M 是 SAP BW/4HANA 中新复合提供者、信息对象和查询的默认设置。
P 进攻型:优化器决定查询是以专家模式 (9) 还是 (3) 执行。
请注意,系统会将以前的(固定)专家模式一次性自动映射到新的(相对)标准模式:
以前的设置 = 0、2 或 3 —— 新设置 = J
以前的设置 = 6、7 或 8 —— 新设置 = M
以前的设置 = 9 —— 新设置 = P
绝对运行时模式
有一个开关可以回到以前的绝对运行时模式。如 SAP 注释 2094114 所述,你可以通过 RSADMIN 表中的条目为所有用户设置 RSROA_TREXOPS_EXPERT 开关,也可以将其作为用户参数针对特定用户设置。该开关会启用所有 SAP HANA 中的操作 模式。可以使用以下值:
ON:显示所有 SAP HANA 中的操作 模式(相对和绝对)。OFF(或无值):仅显示相对的 SAP HANA 中的操作 模式。例外情况是,如果某个对象的模式被设置为绝对值,该值也会显示出来。
绝对模式(又称专家模式)区分七种不同的运行时:
模式 0:不在 SAP HANA 中执行操作 如果你不希望系统对所选查询使用 SAP HANA 中的优化操作,请选择此选项。例如,当查询使用虚拟特征或关键值,且这些特征或关键值的计算依赖于特定聚合级别时,这可能很有必要。生成的 SQL 语句会访问每一个 InfoProvider。这些语句并行执行,同时最多不超过六个。读取访问受 SQL 语法限制,与其他数据库上的读取访问类似。SAP HANA 上的 SQL 执行速度明显快于传统数据库。
模式 2:单个 PartProvider 访问 每个 InfoProvider 都通过对生成的 InfoProvider ColumnView 调用 SAP HANA API 来访问。SAP HANA API 包含下推来自受限关键值的基于单元格的筛选器(FEMS),以及对层次聚合和筛选的优化处理。SAP HANA API 会为每个 InfoProvider 并行调用,同时最多不超过六个。
模式 3:优化访问 对于复合提供者,会对所有参与的 InfoProvider 进行联合优化访问。系统会分析复合提供者,并创建一个具有同构映射的 InfoProvider 集群。运行时会在 SAP HANA 中创建一个 CalculationScenario,将各 InfoProvider 的 ColumnView 组合起来。随后由 SAP HANA API 为该集群执行单条语句。其他 InfoProvider 则独立访问,但并行进行。与模式 2 的区别在于,复合提供者的 UNION 操作也会被下推到 SAP HANA。
模式 6:异常聚合 这是将所有 OLAP/计算操作(包括异常聚合)都下推到 SAP HANA 的执行模式。为此,系统会创建一个 CalculationScenario,将各 InfoProvider 组合起来,并创建具有不同层的 OLAP 计算图。以下定义支持此优化:
当记录多于一条时不聚合 [NO1]
当值多于一个时不聚合 [NO2]
标准差 [STD]
方差 [VAR]
模式 7:在 SAP HANA 中计算公式 在 SAP HANA 1.0 SP11 及更高版本中,支持大量异常聚合,尤其是计算公式异常聚合。只有当公式结果没有货币或单位,或者公式结果的货币或单位取自另一个单独操作数时,带异常聚合的公式才能在 SAP HANA 中计算。该模式随 SAP BW/4HANA 1.0 引入,也适用于 BW 7.5 SP4。
模式 8:在 SAP HANA 中计算具有复杂货币或单位的公式 除了“在 SAP HANA 中计算公式 (7)”模式之外,系统还支持具有复杂货币或单位的公式。该模式随 SAP BW/4HANA 1.0 SP08 引入。
模式 9:在 SAP HANA 中计算条件 系统支持条件的计算。该模式随 SAP BW/4HANA 2.0 引入。
支持的排名运算符:TopN、BottomN、TopSUM、BottomSUM
支持的 having 运算符:EqualTo/NotEqualTo、LessThan/GreaterThan、LessEqualThan/GreaterEqualThan、Between/NotBetween
提示
一般来说,并非所有 BW 查询都能从下推中获益;这取决于确切的查询定义和提供者中的数据。因此,对于每一个运行时至关重要的查询,可能都有必要检查该特性对性能的影响,以便能够准确选择适当的 HANA 操作设置。详情请参见 SAP 注释 2365030。
定义运行时模式
该属性可以在 BW 建模工具中针对 BW 查询、复合提供者和信息对象进行更改。对于 BW 查询,仍然可以选择在 Query Monitor(事务码 RSRT)中设置此参数。
在 Query Monitor(事务码 RSRT)中,除了设置永久参数外,你还可以使用 Execute+Debug 功能。在这里,可以临时打开或关闭 SAP HANA 优化,仅用于模拟和测试目的。
注意
如需了解更多信息,请参阅以下来源:
新的 OLAP 编译器:https://community.sap.com/t5/technology-blogs-by-sap/the-olap-compiler-in-bwonhana/ba-p/12962694
2019 年第一季度 SAP BW/4HANA 2.0 对 SAP BW/4HANA 分析引擎的改进:https://community.sap.com/t5/technology-blogs-by-sap/improvements-of-bw-4hana-analytical-engine-in-q1-2019-with-bw-4hana-2-0/ba-p/13390961
SAP 注释 2365030:启用 HANA 下推后查询变慢
SAP 注释 2455142:如何进行 BW 查询性能/内存分析
SAP 注释 2156123:SAP HANA 中的首值/末值异常聚合
SAP BW/4HANA 帮助:SAP HANA 中的操作:https://help.sap.com/docs/SAP_BW4HANA/107a6e8a38b74ede94c833ca3b7b6f51/4bbda228a8b43c22e10000000a42189b.html
SAP BW/4HANA 帮助:SAP HANA 中的异常聚合: https://help.sap.com/docs/SAP_BW4HANA/107a6e8a38b74ede94c833ca3b7b6f51/1dc912e4520f40a0bf60710cb64799a6.html
监控并优化 BW 查询性能
观看以下演示,了解如何通过使用 SAP HANA 运行时模式来监控并改进查询性能。
演示:观看演示(SAP 官方交互式练习)