电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

如何防止服务流程OOM?SQL分页查询来解决

来源:金蝶云社区作者:金蝶2024-09-234

如何防止服务流程OOM?SQL分页查询来解决


作为复杂业务集成场景下的首选技术,服务流程拥有灵活可配的设计、运行、监控和异常处理机制,深受集成云用户亲睐。


But……为了支持失败重试和撤销补偿的异常处理操作,服务流程需要保存运行时的数据和状态。这样一来,当处理的数据量过大时,缓存的数据量随着流程运行在不断扩大,严重影响系统性能,甚至可能导致内存溢出。


难道大批量数据同步且包含复杂的处理过程(数据映射、值转换、数据加载、从多个来源取数等) 的集成场景就不能处理了吗?


当然不会这么局限啦~紧跟小编,教你一种将服务流程应用于大数据集处理的方法:使用SQL分页查询的方式对大数据集进行切分,使服务流程通过循环的方式逐页处理,保持服务流程的运行期内存状态数据量始终处于一个合理的范围内。




1 流程属性说明

1.1 基本信息配置优化


首先,为了避免大数据同步时产生太多日志耗费资源,可以将“日志级别”调整为“错误”;打开“禁止记录追溯信息”开关,并将“自动保存时间间隔”延长,降低服务流程状态信息写入数据库的频率。


基本信息配置示例


1.2 流程变量声明


设置流程变量以便在流程中控制分批取数大小,并将取出的数据保存下来进行分批处理,其中主要变量为:


1)DEMO1_DATADEMO2_DATA作为两个集成对象变量,用于暂存分批数据


2)“每页大小(PAGE_SIZE)”用于设置每批数据行数,示例中设置5行,则5行数据作为一页数据进行处理,可根据实际数据行的大小进行自定义设置。建议每批数据的大小不超过5MB


流程变量设置示例


1.3 依赖资源声明


添加用于执行SQL查询的数据源。数据源的别名须与执行SQL语句节点中所用的连接参数赋值保持一致。


依赖资源填写示例


OK,以上准备工作都做好了,接下来配置服务流程图。


2 流程图详解

2.1 主流程图


主流程用于维护分页循环,可以实现以下功能:


  • 通过SQL语句查询出一页的数据,保存在DEMO1_DATADEMO2_DATA变量中;

  • 计算当前页数据大小并递增已处理行数;

  • 处理变量中的数据并清空变量(业务处理流程图);

  • 当前页数据处理完后递增查询起始点以进行下一次查询。


主流程示例


2.2 “查询一页数据”节点


分页查询SQL的语法与所用的数据库相关,应用时需要相应调整,具体语法请搜索相应数据库的SQL语法手册;在WHERE条件中使用“?”表示参数;应在ORDER  BY语句的最后一列加上主键字段,确保数据的排序是确定的。


“查询一页数据”节点信息及脚本示例


2.3 “递增数据行计数器”节点


如果改变了暂存查询结果的流程变量名,需要相应修改“DEMO1_DATA”


“递增数据行计数器”节点信息及脚本示

如何防止服务流程OOM?SQL分页查询来解决

作为复杂业务集成场景下的首选技术,服务流程拥有灵活可配的设计、运行、监控和异常处理机制,深受集成云用户亲睐。But……为了支持失败重...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信