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

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何防止服务流程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”


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


2.4 ”处理一页数据“节点块


此节点类型是“块节点”,封装业务集成的逻辑,其具体设置应根据业务的需要配置,本文仅作简单示例。如果单个块节点封装的过程太复杂,也可以适当拆分为多个块节点,提高整个流程图的可读性和可维护性。


如果流程变量中暂存的内容不再需要使用,及时清理有助于降低流程运行时状态保存到数据库时的开销。


“处理一页数据”节点块流程示例


2.5 “递增下一页的起始行号”


递增下一页的起始行号,为查询下一页数据做准备。


“递增下一页的起始行号”设置示例


3 注意事项

3.1 数据分批


1、SQL语句查询结果的排序必须是确定的,如果不确定的话,可将主键字段添加到最后。

2、SQL语句查询结果的排序字段应避免选择“最近修改时间”或类似的字段,以免在大数据集处理过程中,新修改或插入的数据被排到已读取数据的前面,导致数据遗漏和重复处理。


3.2 应用扩展


1、可以使用API提供的分批查询替代SQL的分页查询,以支持基于API的大数据集集成。

2、使用巧妙的WHERE语句设计规避Oracle/SQLServer分页查询的复杂SQL语法。


4 相关链接


集成云脚本应用指南


集成服务流程操作指南


5 划重点


服务流程SQL分页查询主要通过以下四个步骤进行大批量数据同步:


1)使用主流程维护分页循环

2)查询一页数据节点:通过变量锚定每次循环的起始点和查询量;

3)递增数据行计数器节点:计算并递增查询结果行数;

4)处理一页数据节点块:封装业务集成逻辑。




#往期推荐#


# 新手也能看懂,苍穹消息集成其实很简单

# 集成方案的“点火”时刻!花式启动数据集成

一文拆解集成原理,让数据集成不再伤神

# API协议太多,如何高效集成?快速点进激活技能!


更多精彩内容,“码”上了解!↓


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

作为复杂业务集成场景下的首选技术,服务流程拥有灵活可配的设计、运行、监控和异常处理机制,深受集成云用户亲睐。But……为了支持失败重...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息