作者:李慧
公司:河南东泠电子科技有限公司
场景一:对于功能或者接口,所用到的透明表的数据两级达到千万、亿级时,功能运行缓慢或者接口数据传输慢甚至失败,如何解决
Solution1:Data Archiving(数据归档)
采取数据归档其实是最行之有效的方法。可以执行事务:SARA(数据归档的主要TCODE)、DB02性能分析(主要是对Performance,space等)
Solution2:建立索引
SE11,在表中,Create Index,这里创建索引的依据是where条件后面的字段,一般关键字段已经被sap默认创建了Primary Index。通过牺牲空间的形式,达到性能的提高。
Solution3:用Hint指定Index(采取此方法需谨慎,建议寻求标准的function来替代select,此处不再对各业务模块儿所涉及到的function进行说明)
Hint是Oracle提供的一种SQL语法,允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式,但是,如果你的Hint写错了,那么,在Oracle层呢,就会被当作注释处理掉。
ABAP中常见有两种用法:
1.全表扫描:%_HINTS ORACLE 'FULL("table_name")'
2.指定索引:%_HINTS ORACLE 'INDEX("table_name" " index_name")'
(注:在SQL代码中加入Hint,特别是性能相关的Hint是很危险的做法,写得不匹配反而拖累Performance。在执行该操作的时候,一定要谨慎。所以此处建议,能够使用标准的FM来解决数据的查询,就尽量不要使用select语句进行数据的查询)
而且,在使用select对多表查询的时候,
1、如果存在多表查询的时候,尽量通过维护VIEW,千万不要采用Select语句的嵌套方式,如select套select、loop多层嵌套且进行select;
2、或者使用Inner Join方式 ;
3、采取子查询的方式
相关Transaction Code:
ST05 性能分析,追踪SQL,分析哪条SQL Statement语句,最耗时间
STAD 得到某个程序或事务运行时的总体分析数据,系统时间,CPU时间等
SE30 分析某个事务或程序的执行时间,有一些性能分析的例子
对于项目中涉及到的具体问题,仍需结合实际情况进行具体的分析。本人坚持,能用标准不自己去select。此外业务逻辑的有效组织对开发者的技术设计也是至关重要的,这直接影响到如何将大数据按需拆分至小单元分类计算汇总,间接提升系统的运行速度。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。