【问题标题】:Spring batch - using in-memory database for huge file processingSpring Batch - 使用内存数据库进行大文件处理
【发布时间】:2015-07-20 14:24:52
【问题描述】:
我正在使用 Spring 批处理来处理大量数据 (150 GB) 以生成 60 GB 的输出文件。我正在使用垂直缩放方法和 15 个线程(步进分区方法)。
作业执行详细信息存储在内存数据库中。 CPU利用率更高,因为它在单机上运行并且文件大小很大。但是服务器的配置很好,比如 32 核处理器,我为此进程使用了 10 GB 内存。
我的问题是,如果我将它移到单独的数据库中,它会减少一些 CPU 使用率吗?另外,使用 In-Memory 数据库进行生产是一个糟糕的选择/decision?
问候,
尚卡尔
【问题讨论】:
标签:
java
spring-batch
cpu-usage
【解决方案1】:
当您谈论从内存数据库转移到单独的数据库时,您只是在谈论批处理运行时表(job_instance、job_execution、step_execution...),对吧?
如果是这样,我不认为 CPU 使用率会下降很多。根据您的块大小,您的数据处理将需要比更新批处理运行时表更多的 CPU 使用率。
是否使用内存数据库进行生产是否是一个好的决定,取决于您的需求。需要考虑的两点:
- 您丢失了写入批处理运行时表的所有信息。这可能有助于调试会话或只是拥有一种历史记录。但您也可以在日志文件中“保留”此类信息。
- 您将无法实施可重新启动的作业。如果您的工作需要数小时才能完成,这可能是一个问题。但是对于只从文件读取、写入文件并在几分钟内完成的作业,这不是问题。