问题就是这样。
表单一个应用程序我得到大约2,00,000个加密值 任务
我不想在进程之间使用任何文件 存储2,00,000条记录列表或其他内容的最佳方法是什么 如何在db中一次性转储此记录。最好是在块中潜入并使用单独的线程来处理它。 请为此建议一些不那么耗时的解决方案。
我正在使用弹簧批次,这个过程将是一个工作。
答案 0 :(得分:1)
进行Spring批处理以执行此类操作。您将需要一个块tasklet。这种类型的tasklet使用阅读器,项目处理器和编写器。此外,这种类型的tasklet使用流式传输,因此您永远不会在内存中同时拥有所有项目。
我不确定您的数据的传入格式,但几乎任何用例都有现有的读者。如果找不到所需的类型,可以创建自己的类型。然后,您需要实现ItemProcessor
来处理您需要进行的任何修改。
写作时,您可以使用JdbcBatchItemWriter
。
至于这些页眉/页脚,我需要更多细节。如果它们是所有记录的聚合,则需要事先处理它们。您可以将最终结果放入ExecutionContext。
答案 1 :(得分:0)
有一些通用的技巧可以让批量插入变得更快:
考虑使用数据库的本机批量插入。
在插入主键之前,将记录按升序排序。
如果要插入空表,请先删除辅助索引,然后重新创建它们。
不要在一个数据库事务中完成所有操作。
我不知道这些技巧有多好转化为弹簧批...但如果它们没有,你可以考虑绕过弹簧批并直接进入数据库。