gpt4 book ai didi

java - Spring 批处理 : Reader Issue : Multiple input queries for forming domain object

转载 作者:行者123 更新时间:2023-12-01 13:41:11 27 4
gpt4 key购买 nike

我有一个读者查询,它从数据库中获取产品 ID。

我的域对象也包含多个列表。

我的提交次数是 1000。

因此,我的 sql 一次获取 1000 个项目(即 1000 个产品 ID)。

但是,在我的行映射器中,我还有 10 个其他查询,针对 block 中获取的每个产品 ID 运行这些查询。这些查询返回一些行作为结果集。我解析这些结果集以在我的域对象中设置列表。

这是创建一个完整的域对象的方式,然后我将其传递给编写器,以便使用合适的映射器写入 XML。

但是,由于 rowmapper 中的这些查询针对每次记录提取而运行,因此我的整体程序性能受到严重影响。

我无法将这些查询与主要读者查询结合起来。

对于这样的需求有什么解决方案来提高性能吗?我有什么办法可以对 rowmapper 中运行的查询进行一些并行处理以减少处理时间?

感谢您的阅读!

最佳答案

针对您的具体问题:

  1. 是否有任何解决方案可以满足这种提高性能的要求 - 是的。根据您的特定用例(数据库设计、任何查询是否可缓存等),可能有许多解决方案。
  2. 我有什么办法可以对 rowmapper 中运行的查询进行一些并行处理,以减少处理时间 - 有了这个,我不得不问是否有能力让读者仅返回填充了 id 的域对象,并让 ItemProcessor 执行其余查询。我问这个问题是因为有一个名为 Spring Batch Integration ( https://github.com/spring-projects/spring-batch-admin/tree/master/spring-batch-integration ) 的项目提供了 AsyncItemProcessor。您可以使用它来并行处理每个项目(进行查找),然后相应的 AsyncItemWriter 将在查找完成后写出结果。这将是实现此类逻辑并行化的最快、最简单的方法。

还有其他选项可用于并行化此类场景,但请记住,运行许多小查询会破坏数据库。并行运行它们只会使问题更加复杂。您可能需要重新考虑这些子查询的结构。

关于java - Spring 批处理 : Reader Issue : Multiple input queries for forming domain object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20759280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com