Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring批处理-设计方法中需要帮助_Spring_Spring Batch_Partitioning - Fatal编程技术网

Spring批处理-设计方法中需要帮助

Spring批处理-设计方法中需要帮助,spring,spring-batch,partitioning,Spring,Spring Batch,Partitioning,我们需要根据上次运行配置日期将表数据集从一个数据源合并到另一个数据源。已经实现了spring批处理,工作正常,但性能太慢。处理大约500万条记录大约需要18小时。尚未在中使用任何多线程或分区。需要帮助找到正确的设计方法以提高性能。以前,此任务是通过sql loader完成的,只需3小时即可完成。大约有8个表要合并到另一个数据源中。如果需要任何信息,请告诉我。提前谢谢 Spring批处理的设计目的是允许对批处理作业进行增量增强,从基本的单线程处理到全面的多jvm规模解决方案,每个步骤的配置更改最少

我们需要根据上次运行配置日期将表数据集从一个数据源合并到另一个数据源。已经实现了spring批处理,工作正常,但性能太慢。处理大约500万条记录大约需要18小时。尚未在中使用任何多线程或分区。需要帮助找到正确的设计方法以提高性能。以前,此任务是通过sql loader完成的,只需3小时即可完成。大约有8个表要合并到另一个数据源中。如果需要任何信息,请告诉我。提前谢谢

Spring批处理的设计目的是允许对批处理作业进行增量增强,从基本的单线程处理到全面的多jvm规模解决方案,每个步骤的配置更改最少。在不太了解用例的情况下,您采取的方法实际上取决于您的需求:

您需要可重启性吗?如果是这样,那么就消除了基本的多线程步骤,因为大多数读卡器不支持具有可重启性的多线程处理。 进程是否已绑定?我假设是这样,这将消除远程分块作为一种选择。 如果上述假设是正确的,那就剩下分区了。您可以在此处阅读有关分区与分块的更多信息:

选择分区作为模型后,您只需要回答以下问题:

什么是分区策略?分区将要处理的数据的描述从主机发送到每个从机。您需要确定该描述在db中包含哪些内容,id范围是一个常见选项。 本地还是远程?使用线程执行从机的单个JVM是否可以获得所需的吞吐量,或者是否需要更大的马力?如果是这样的话,您将想看看远程分区。
我想了解数据库操作会有所帮助。。例如,如果您正在使用联接,那么涉及到哪些DML,以及它是如何使用的等等