ABAP/4的优化

来源:互联网 发布:windows内核编程 编辑:程序博客网 时间:2024/05/13 08:28
 

1.首先是找出有问题的程序:
一般查询程序执行时间只要超过100秒(这是观察SAP标准程序的效率值)以上这些程序就是要Tune的可以透过T-CODE:SM50 或 T-CODE:SM37 去找资料,分析在线或是背景执行有哪些ABAP 很慢

2.程序效能分析
T-CODE:SE30 程序执行时间分析,找出程序慢的部份,执行完程序可以区分三个阶段的执行时间:
ABAP、Database、System,这三个部份对效能的优先级为Database -> System -> ABAP
要依序排除程序这些部份的问题。一般建议上线前Basis 一定要先审核这个数据是OK才让该ABAP
上线,否则一上线会拖垮整个主机效能反而更麻烦。

3.Database 效能分析
一般来说自行开发的程序大部份对数据库的有效率存去都会忽略,这部份可以透过检查索引、调整程
式语法改善,在SE30分析程序可以看出哪些Table花费的成本最高,针对程序中这些SQL语法进行检查:
首先要检查索引,程序中的Where字段在Table index是有满足,如果没有Index,就要评估该报表
执行频率,如果很高就要建一个索引(T-CODE:SE11)给它用,否则就应排背景于非上班时间执行。

可以透过 ST05 去追踪SQL Performance,如此可以看到程序中SQL使用的,有时Table明明有可以
符合 SQL 使用的Index可是程序还是不依该Index Query Data,这是系统判断错误,这时可以使用
数据库特有的语法指定Index执行。

Oracle 指定Index 的范例语法为:
SELECT carrid connid cityfrom
FROM spfli INTO (xcarrid, xconnid, xcityfrom)
WHERE carrid = 'LH ' AND cityfrom = 'FRANKFURT'
%_HINTS ORACLE 'INDEX("SPFLI" "SPFLI~001")'.
             ^^^^^ ^^^^^^^^^
             Table Index ID

4.系统资源的控制
当DB的问题处理完成后,就要注意程序对系统资源使用的控制了,ABAP中不能无限制的使用系统内存,有些大量耗用内存的程序是可以透过程序技巧调整的,还有就是用完了要清。

5.用OCCURS NUM_RECS声明内表,NUM_RECS参数是你估计(或希望)使用到的数据条数。如果使用到的记录条数超出NUM_RECS参数的限制,数据将被存放在硬盘上的交换空间(不是内存)。

原创粉丝点击