SAP-Hana-SQL解析时间过长优化

项目场景:

SAP中自开发的物料主数据查询报表,用于查询物料关联的各个视图数据,包括基本视图/工厂视图/销售视图/仓库视图等,共138个字段。

问题描述:

该报表已按照Hana代码下沉的思路,将多次从Hana取数再在应用服务器处理的逻辑,改为1个SQL直接从Hana取数,全量查询时6秒左右(12万条数据138个字段)。 但仍存在部分场景,执行时间超过90秒。

原因分析:

调查过程如下:
  1. 确认执行较慢的执行条件,发现均为多条物料号查询,条目在100到9999条间(大于9999条会 dump)

查询条件分析

  1. HANA studio 查询视图M_SQL_PLAN_CACHE ,发现执行时间花费在Preparation上,即语句执行前的解析上(截图其他语句,原记录未保存)
    语句执行分析
  2. 分析Hana语句执行过程
    如下图,当hana 收到一条sql语句的时候,会到sql plan cache 中确认是否有已解析过的语句,有的话直接取,没有的话会重新解析,时间即耗费在解析环节。
    Hana语句的执行过程
  3. Hana对多条件range的解析过程
    对于ABAP中的RANGE条件,Hana解析的时候会转换为Where条件。由于物料号有几千条,最终的语句是非常长的。其中任意1个物料号的变更,Hana都认为是不同的语句,需要重新解析。而这个判断条件是否有差异的过程比较复杂,时间应该耗费在这里(自认为也是Hana的一个bug,可能后期会优化)。
    ST05追踪解析后的语句如下:
    解析后的语句

解决方案:

1.参考SAP建议,对于长List条件查询,转换为内表join或for all entries 方式
在这里插入图片描述
转换后,解析语句如下,红框部分为物料号条件,物料表作为一个单独参数传入,条件变化时不需要重新解析:
在这里插入图片描述
效果:此种SQL执行时间也能达到6秒内。

2.减少SQL中的硬写入的文本:
在解决上述问题时,SAP也提到需尽量减少SQL中的文本,以降低解析时间。
在这里插入图片描述
从ST05看SQL语句,如下‘10012’为直接写死在sql中的条件为文本,用变量代替的(?)为绑定变量
在这里插入图片描述
对应到OPEN SQL中如下,共有约20个写死的文本。
在这里插入图片描述
此时,从Hanastudio 查询sql plan cache , 解析时间占1.83秒

替换SQL语句中18个文本变量
在这里插入图片描述
再次执行SQL语句,类似条件下,解析时间平均降低0.3秒
在这里插入图片描述

附参考资料:

Bing 搜索SAP HANA PARSE LONG TIME,有如下Note相关
SAP HANA Parsing
How bind variables can reduce parsing or query compilation time on SAP HANA

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SAP HANA 数据库是一种面向内存的关系型数据库,具有高速的数据处理和查询能力。SQL(Structured Query Language)是一种用于数据库管理的标准化语言,用于查询、添加、删除和修改数据库中的数据SAP HANA 数据SQL 参考手册为用户提供了详细的 SQL 语法和语句用法,使得用户能够充分利用 SAP HANA 数据库的强大功能和高效性能。这个手册提供了丰富的语句和函数,是 SAP HANA 数据库操作者必备的工具之一,可以让用户根据自己的需求和数据特点,编写出高效、精确的 SQL 语句。 手册包含了基本的 SQL 语法和数据类型,包括数据的增删改查等常用操作。同时,它还提供了高级的特性和函数,如聚合函数、窗口函数、数据挖掘函数等,可以应用于数据分析、数据处理和数据建模等方面。 该手册还解释了 SAP HANA 数据库语句执行过程的细节,包括语句优化、执行计划和性能调优等方面。通过深入了解 SAP HANA 数据SQL 参考手册,用户可以更好地理解数据库内部的工作原理,从而进一步优化 SQL 语句的性能。 总之,SAP HANA 数据SQL 参考手册是 SAP HANA 数据库用户的重要工具,可以帮助用户更好地理解数据库的功能和性能,编写高效、准确的 SQL 语句,提高数据库的效率和性能。 ### 回答2: SAP HANA数据SQL参考手册是专门为SAP HANA数据库设计的一份指南。该手册包含了SAP HANA数据库所支持的各种SQL语句和函数,帮助用户更好地了解和使用该数据库。 SAP HANA数据库是一款高性能的内存数据库,可以帮助企业快速处理海量数据。为了发挥其最大的潜力,需要熟练使用SAP HANA数据库的各种SQL语句和函数。而这正是该手册的目的所在。 该手册详细介绍了SQL语句的语法和用法,包括SELECT、INSERT、UPDATE、DELETE等常用语句,还涉及到数据类型、索引、触发器、存储过程等高级主题。此外,手册还提供了各种函数的介绍,如聚合函数、日期函数、文本函数、数值函数等,以及如何创建和使用用户定义函数、视图和游标等。 需要说明的是,SAP HANA数据SQL参考手册不是用于入门学习的教材。用户需要有一定的数据库基础和编程知识,并了解SQL的一般原理和用法。只有在此基础上,才能更好地理解和使用该手册。 总之,SAP HANA数据SQL参考手册是一份非常重要的工具,对于想要熟练使用SAP HANA数据库的开发人员和数据库管理员非常有用。 ### 回答3: SAP-HANA数据SQL参考手册是一本非常有用的工具,它为用户提供了丰富的语法和查询操作,以帮助他们更有效地使用SAP-HANA数据库。该手册覆盖了广泛的主题,包括数据建模、查询以及事务处理等方面,也提供了详细的语法和示例,以便用户在使用时可以轻松理解操作。 在手册中,用户可以找到各种不同类型的操作和函数,包括基本的查询操作、子查询、搭配联接使用的查询、排序函数、聚合函数、数据分析函数以及窗口函数等。除此之外,该手册还提供了许多计算、数据转换以及条件函数等,这些都是在数据库中十分有用和常见的操作。 另外,在手册中还提供了对SAP-HANA中特定功能的解释和指导,例如如何使用SAP-HANA中的新型模型,如何使用视图和数据封装技术等。无论用户是在处理大量的数据还是在执行复杂的分析操作,该手册都可以为他们提供有用的参考和指导。 总之,SAP-HANA数据SQL参考手册是一本非常重要的工具,它可以帮助用户更高效地使用SAP-HANA数据库,并帮助他们在处理大量数据和执行复杂的分析操作时提高工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值