【问题标题】:performance issue in getting millions of record from database and processing in ERP in mule esb在 mule esb 中从数据库中获取数百万条记录并在 ERP 中处理的性能问题
【发布时间】:2017-04-30 15:41:18
【问题描述】:
我们试图每天从数据库中获取数百万条记录并在 ERP 系统中进行处理,我们遇到了性能问题,社区中是否有解决方案?
在 mule 中处理记录的最佳方法是什么?那么我们应该使用批处理还是有任何替代方法?如果我们使用批处理或任何其他解决方案,我们如何使用它才不会遇到任何性能问题?
【问题讨论】:
标签:
mule-component
mule-esb
【解决方案1】:
批处理听起来像是您想要做的。对于每个批处理步骤,Mule 创建一个批处理作业实例,每个实例都包含一个带有批处理记录的持久队列。但是,它对 MuleEvent 进行了深层复制,其中包含流变量、流构造、消息、处理时间、会话和交换模式,因此请注意,在进入批处理作业之前,请确保您保持轻量级的足迹。如果您必须将具有数百万条记录的有效负载设置为流变量以进行某些操作,请确保在开始执行批处理之前将其删除。它将这些批处理步骤加载到内存中并同时执行它们,因此您需要的内存量将是批处理作业实例(特别是 MuleEvent)的大小乘以批处理步骤的数量。
【解决方案2】:
由于我们没有关于您的具体情况的详细信息,因此这里有一些一般性的想法。在处理大型数据集时,您肯定需要进行性能测试,以确保您的流程设计表现良好。
为了澄清,我在下面提供了显示流的选项,这些选项的性能稍差,但允许您处理大型数据集。如果您可以处理内存中的数据集并且想要更快的处理速度,请关闭流式传输。