【问题标题】: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 使用率。

    是否使用内存数据库进行生产是否是一个好的决定,取决于您的需求。需要考虑的两点:

    • 您丢失了写入批处理运行时表的所有信息。这可能有助于调试会话或只是拥有一种历史记录。但您也可以在日志文件中“保留”此类信息。
    • 您将无法实施可重新启动的作业。如果您的工作需要数小时才能完成,这可能是一个问题。但是对于只从文件读取、写入文件并在几分钟内完成的作业,这不是问题。

    【讨论】:

      猜你喜欢
      • 2016-06-29
      • 2018-01-21
      • 1970-01-01
      • 2018-05-22
      • 2020-04-27
      • 2012-05-23
      • 2020-01-19
      • 2012-10-02
      • 2019-10-20
      相关资源
      最近更新 更多