《SAPABAP性能优化》PPT课件.ppt

上传人:san****019 文档编号:7351098 上传时间:2020-03-20 格式:PPT 页数:27 大小:757.10KB
返回 下载 相关 举报
《SAPABAP性能优化》PPT课件.ppt_第1页
第1页 / 共27页
《SAPABAP性能优化》PPT课件.ppt_第2页
第2页 / 共27页
《SAPABAP性能优化》PPT课件.ppt_第3页
第3页 / 共27页
点击查看更多>>
资源描述
ABAP程序性能优化 目录 一 前言二 程序性能优化的重点三 怎样降低CPU负载四 怎样降低DB负载五 怎样降低程序内存使用六 怎样检查程序性能 第2页 本文提供一些常用的方法 用以提高ABAP程序运行速度 降低系统荷载 节省内存开销 但这些方法不是孤立的 我们的最终的目的是在三者之间达到一种平衡 一 前言 第3页 第4页 二 程序性能效率优化的重点 降低CPU负载 减少循环次数 降低数据库负载 减少IO操作 内存使用的优化 减少内表大小 SAP系统三层架构 第5页 三 怎样降低CPU负载 侧重于程序语句处理逻辑 减少循环次数 1 使用WHERE条件减少循环次数 2 尽量避免使用MOVE CORRESPONDING和INTOCORRESPONDINGFIELDSOF 3 使用SORTEDTABLE和HASHEDTABLE表类型 4 使用BINARYSEARCH二分查找算法 5 使用较高效的DELETEADJACENTDUPLICATESFROM删除内表邻近重复记录 6 使用较高效的COLLECT语句对记录进行聚集加总 7 嵌套loop语句 可以用先read在loopatfrom 减低CPU负载 1 使用WHERE条件减少循环次数 减少循环次数可以减少CPU操作次数 减少操作时间LOOPAT WHERE SELECTION OPTIONS s vbelnFORvbak vbeln LOOPATitab IFitab vbelnINs vbeln ENDIF ENDLOOP SELECTION OPTIONS s vbelnFORvbak vbeln LOOPATitabWHEREvbelnINs vbeln ENDLOOP 不推荐 推荐 第6页 降低CPU负载 2 尽量避免使用MOVE CORRESPONDING和INTOCORRESPONDINGFIELDSOF CORRESPONDING语句在系统内部存在隐式操作 1 检查元素名称匹配 2 检查元素类型匹配 3 元素类型转换 SELECT INTOCORRESPONDINGFIELDSOFTABLEitabFROMvbakWHEREvbeln p vbeln LOOPATitab1INTOwa MOVE CORRESPONDINGwatoitab2 APPENDitab2 ENDLOOP SELECTvbelnposnrINTOTABLEitabFROMvbakWHEREvbeln p vbeln Itab2 itab1 SELECTvbelnasfld1posnrasfld2INTOTABLEitabFROMvbakWHEREvbeln p vbeln LOOPATitab1INTOwa Itab2 fld1 wa matnr Itab2 fld2 wa meinsAPPENDitab2 ENDLOOP 不推荐 推荐 推荐 第7页 降低CPU负载 3 使用SORTEDTABLE和HASHEDTABLE表类型 第8页 降低CPU负载 4 使用BINARYSEARCH二分查找算法 一般线性查找的缺点就是耗时 而二分查找比线性查找更高效 READTABLEitab2WITHKEYvbeln Itab1 vbelnANDposnr itab1 posnr 时间复杂度为O n 阶 SORTTABLEitab2BYvbelnposnr READTABLEitab2WITHKEYvbeln Itab1 vbelnANDposnr itab1 posnrBINARYSEARCH 时间复杂度为O logn 阶 注意 使用BINARYSEARCH前必须对内表进行按索引排序 不推荐 推荐 第9页 降低CPU负载 5 使用较高效的DELETEADJACENTDUPLICATESFROM删除内表邻近重复记录 注意 使用前必须要对内表先进按索引排序SORTITABBYXXXX 第10页 降低CPU负载 6 使用较高效的COLLECT语句对记录进行聚集加总 注意 COLLECT语句的效率只体现在当你使用的是顺序表和哈希表的时候 或者内表经过有效排序之后 否则当内表数据过多时 检索时间会很长 一般不推荐使用在记录条数非常多的标准表 第11页 降低CPU负载 7 嵌套loop语句 可以用先read在loopat fromsy tabix方法处理 可以有效减少循环次数 第12页 第13页 四 怎样降低数据库负载 侧重于SQL语句逻辑 减少IO操作 1 避免使用SELECT ENDSELECT语句 2 避免使用SELECT 3 使用FORALLENTRIESIN语句联接数据表和内表 4 使用索引提高查询效率 5 避免使用SQL的ORDERBY语句 SORT语句会更高效 6 使用SQL聚合函数MAX MIN COUNT AVG SUM 降低数据库负载 1 避免使用SELECT ENDSELECT语句 SELECTENDSELECT语句其实是一个循环体 为了减少循环次数 建议使用一次性TABLE赋值赋值 SELECTebelnINTOit ebeln ekkebelnFROMekkoWHEREebeln p ebeln APPENDit ebeln ENDSELECT SELECTebelnASekknebelnINTOTABLEit ebelnFROMekkoWHEREebeln p ebeln 不推荐 推荐 第14页 降低数据库负载 2 避免使用SELECT 第15页 降低数据库负载 3 1 使用FORALLENTRIESIN语句联接数据表和内表 第16页 降低数据库负载 3 2 使用FORALLENTRIESIN语句联接数据表和内表 第17页 降低数据库负载 3 3 使用FORALLENTRIESIN语句联接数据表和内表 使用的时机 1 簇表是禁止JOIN的表类型 当需要联接簇表查询数据时 2 JOIN超过3个表会出现性能问题 当使用JOIN联接的表超过3个时 SELECT INTOitabFROMEKKOJOINEKPOONEKKO EBELN EKPO EBELNJOINEKKNON JOINMARAON SELECT INTOTABLEitab ekkoFROMekko SELECT INTOTABLEitab ekpoFROMekpoFORALLENTERISINitab ekkoWHEREebeln itab ekko ebeln LOOPATitab ekko READitab ekpoWITHKEYebeln itab ekko APPENDitab ENDLOOP 不推荐 推荐 第18页 降低数据库负载 4 1 使用索引提高查询效率 第19页 降低数据库负载 4 2 使用索引提高查询效率 SQL查询语句的WHERE条件按照INDEX的顺序书写 SELECT FROMEKKOWHEREMANDT SY MANDTANDLIFNR XXXXXXX ANDEKORG 2701 ANDEKGRP XXX 第20页 降低数据库负载 5 避免使用SQL的ORDERBY语句 SORT语句会更高效 第21页 降低数据库负载 6 使用SQL聚合函数MAX MIN COUNT AVG SUM 第22页 第23页 五 怎样降低程序内存使用 侧重于内表的操作技巧 减少内表大小 1 使用OCCURSn与OCCURS0的区别 2 使用SELECT PACKAGESIZEn分段查询数据 减低数据库缓存负担 3 使用完成后及时清空释放内表 程序内存使用的优化 1 使用OCCURSn与OCCURS0的区别 OCCURSn代表初始化内表的空间大小为n 空间固定 当内表存储记录条数超出n时 系统将依靠页面文件存放超出部分的数据 当系统内存资源十分紧缺的时候 我们可以使用OCCURSn的初始化方法 但是这样的效率稍微慢 OCCURS0代表初始化内表的空间大小为无限 当内表存储记录条数不断增加时 内表所使用的内存空间不断扩大 直到系统无法分配为止 使用内存比使用页面交换更快一些 但是要考虑系统的资源状态 第24页 程序内存使用的优化 2 使用SELECT PACKAGESIZEn分段查询数据 减低数据库缓存负担 SELECT INTOTABLEitabPACKAGESIZE100FROMVABK 该语句实现没次打开DB会话时 往应用服务器上传输100条记录 然后关闭会话 刷新缓存 用于在数据库缓存资源紧缺的情况使用 第25页 程序内存使用的优化 3 使用完成后及时清空释放内表RefreshITAB FreeITAB 可以有效减少内存的持续占用 从而提高内存分配使用小率 第26页 结束句 谢谢
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!