使用ABAP并发编程解决一个实际应用场景中的性能瓶颈问题-阿里云开发者社区

开发者社区> jerrywangsap> 正文

使用ABAP并发编程解决一个实际应用场景中的性能瓶颈问题

简介: 使用ABAP并发编程解决一个实际应用场景中的性能瓶颈问题
+关注继续查看

订阅专栏

When I was responsible for CRM Fiori application, I once meet with a performance issue.


When the users perform the synchronization for the first time on their mobile device, the opportunities belonging to them will be downloaded to mobile which is so called the initial load phase. The downloaded data includes attachment header information.


image.png


Since for Attachment read in CRM, there is no multiple-enabled API, so we have to perform the single read API within the LOOP, which means the read is performed sequentially:


image.png


We really suffer from this poor performance.

As explained in my blog What should an ABAPer continue to learn as an application developer,


I get inspiration from the concept Parallel computing

which is usually related to functional programming language. A function which has no side-effect, only manipulates with immutable data set is a good candidate to be handled concurrently. When looking back on my performance issue, the requirement to read opportunity attachment header data perfectly fits the criteria: only read access on header data, each read is segregated from others – no side effect. As a result it is worth a try to rewrite the read implementation into a parallelism version.


The idea is simple: split the opportunities to be read into different parts, and spawn new ABAP sessions via keyword STARTING NEW TASK, each session is responsible for a dedicated part.


The screenshot below is an example that totally 100 opportunities are divided into 5 sub groups, which will be handled by 5 ABAP sessions, each session reads 100 / 5 = 20 opportunity attachments.


image.png


The parallel read version:


image.pngimage.pngimage.png

In function module ZJERRYGET_ATTACHMENTS, I still use the attachment single read API:

image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云安骑士性能特点与使用场景!
阿里云安骑士是什么?有什么作用?对阿里云云盾产品有一定了解的运维都知道,阿里云安骑士是一款服务器安全运维的管理产品。主要作用可以实时感知云服务器ECS防御和入侵事件,达到实时保障服务器的安全。
1012 0
使用并发集合
并发集合(线程安全),既然是并发集合。那就要知道什么是并发。
9 0
大量使用临时表带来的问题,替代方案,以及如何擦屁股
以前有使用Greenplum的朋友遇到元表膨胀的问题,总结了原因写了一篇文章如下。建议先阅读这篇文档,再阅读本文,里面有些原理我在本文就不讲了。http://blog.163.com/digoal@126/blog/static/1638770402014616113353555 近日,又有使用P
5706 0
静默授权与主动授权区别、使用场景以及常见问题。
静默授权与主动授权对于用户来说的区别 静默授权用户是没有感知的,实际商户是悄悄的就把用户的user_id(PID)获取到 主动授权用户是有感知的并且需要用户去进行点击授权确定按钮的,用户如果不经授权的话,商户是拿不到用户的信息的。
3776 0
Redis不同数据类型命令使用及应用场景
Redis不同数据类型命令使用及应用场景
2202 0
使用shell自动化诊断性能问题(一)(r11笔记第41天)
一直以来要做性能分析的自动化工作,但是久久没有动笔,今天索性来更新一版。 首先我希望得到的一个基本效果就是后台去扫描数据库的DB time,如果超出了阈值,比如这里我设置的为400(即DB time为400%),则会开启自动诊断的任务。
733 0
+关注
2628
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载