临上线了,需求还在改,报表也得改,需求满足了,程序性能又不满足了,净折腾啊. 可客户是付钱的上帝,所以程序要调优要改进,不然,要钱不给!
SAP
系统是经典的三层架构,分为DB,
应用服务器,展示层三层.ABAP程序运行在应用服务器层,访问的数据存储在DB,而我们要做的就是把数据从DB中取出来,然后送到展示层以展现给用户.
而这里DB是作为集中式资源存在的,难以水平扩展,而应用服务器则可以水平进行扩展以满足系统性能需求.所以,调优要尽可能地优先在应用服务器做,其次在
DB层.而报表程序中,往往对数据库的访问会占用大部分的程序运行时间,而且在SAP系统中,业务数据表数据量都很大, 在实现业务逻辑时,要考虑到OpenSQL的效率问题.
1. 避免Table full scan, 尽可能的使用表的索引.
在使用索引时,索引的字段要匹配其顺序,并且索引的字段要尽可能靠前. 可以使用ST05查看程序使用索引的情况.
另外,有一些表并没有直接的索引字段,譬如SD中的表如VBRK等,可以通过索引表VBRKPA等预先取得主键再去访问VBRK.
有意思的是在 的DDIC透明表在ORACLE中并没有真正的主键,而是将DDIC的主键字段作为primary index使用的.
2. 对于FOR ALL ENTRIES 的使用
它一般是根据内表中记录的数量分割成多条SQL语句来执行,所以当内表比较大时,使用FOR ALL ENTRIES对程序运行时间有影响,使用时多考虑.
另外,连接的内表中不要有重复纪录,这样会重复对数据库的访问.
3. 直接将数据缓存在内表
譬如在访问如Sales office等数据量不大的主数据表时,可以将记录预先读出.
4. 使用 database hints
这是杀招,谨慎使用.
它是一些基于特定数据库的优化技巧,使用这些技巧可以影响数据库优化器对表使用的访问策略. 注意,ABAP语法并不能检查它的对错,一定要保证hints的正确性, 另外它只能用于透明表.
示例:
%_HINTS ORACLE 'LEADING(T_01) USE_NL (T_00 T_02)'.
使用T_01作为首要访问的表,并将T_00作为内部表联接.
Note 129385 - Database hints in Open SQL
Note 130480 - Database Hints in Open SQL for Oracle
分享到:
相关推荐
SAP ABAP程序性能调优介绍.pptx
两个简单的报表程序,学习 abap 报表的好东东
SAP ABAP程序性能调优介绍.pdf
以实例详解ABAP报表中如何加入权限判断,配有图片,标注说明等,让你的思路为之一清……
ABAP 报表开发实例,有具体的详解和代码 有需要的朋友可以下载
ABAP报表程序开发规范.doc
SAP ABAP 性能调优开发教程
ABAP报表程序开发规范标准.doc
ABAP报表开发实例.pdf
EXCEL生成ABAP报表程序
ABAP 报表打印单据程序模板,ALV报表显示及打印功能。
SAP-ABAP-报表开发基础教程
SAP ABAP LIST 报表格式设置
这个是国外人使用ABAP写的一个类似一SQL Server的查询分析器,它能够直接运行ABAP的OPEN SQL,由于SE11或者是SE16都只能对一表进行查询,但很多的时候我们需要对多个表进行联合查询,这时就可以发挥很大作用了,希望...
关于SQL语句的性能
ABAP程序 通过程序中的关键字查找程序名和首次出现的行数,双击程序名进入程序
批量下载abap程序-改造版
abap 练习程序abap 练习程序 abap 练习程序abap 练习程序abap 练习程序abap 练习程序
ABAP程序调优报告-包含运行时间对比,源代码,可调试运行, SE38创建程序后,粘贴代码,如有语法报错,根据报错消息调整代码即可,因为存在SAP系统的自定义差异。