gpt4 book ai didi

java - 注册。作业级别的 spring 批处理作业的事务支持

转载 作者:行者123 更新时间:2023-11-29 13:36:42 24 4
gpt4 key购买 nike

假设我需要通过 2 个步骤执行一个 spring 批处理作业。第 1 步是从 postgres 表中读取数据并更新同一个表中的值。第 2 步是从另一个 postgres 表中读取数据并更新此表。对于这种情况,我如何在作业级别实现事务?

也就是说,如果第二步失败,那么第一步应该回滚。

最佳答案

我不确定是否存在自动链式/多级事务处理可靠的解决方案(或者在数据库端不需要大量资源)

if the second step fails, then the first step should be rolled back

好吧,您可以将这两个步骤合二为一:

  • 从第一个表A中读取
  • 使用处理器更新表A
  • 使用处理器从表B中读取
  • 使用writer更新表B

性能会受到很大影响,因为对表 B 的读取将是单次读取,而不是基于表 a 的游标

我会采用这样的补偿策略

  • (可选)正在使用的表是临时表,而不是真正的“生产”表,这使得通过将数据存储与生产解耦来补偿工作变得更容易
  • 一个failed step 1 triggers another step或其他工作/脚本
  • 此步骤/作业/脚本根据需要删除(行或完整表格)

关于java - 注册。作业级别的 spring 批处理作业的事务支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8817691/

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