我有一个BPM应用程序,我每隔5分钟从DB2数据库轮询一些行,调度程序R1使用以下查询 - - 从表中选择*,其中STATUS ='新'
基于返回的行我做了一些处理,然后将这些行的状态更改为“Read”。
但是,虽然这个处理工作正在完成,但它需要5分钟以上,同时调度程序R1会运行并获取上次运行中已经拾取的一些案例。
如何确保每个调度程序选取上次运行中未选择的行。我在select语句中需要做哪些更改?请你。
答案 0 :(得分:1)
如何确保每个调度程序选取上次运行中未选择的行
您需要让每个调度程序都知道其他调度程序选择的内容。例如,您可以通过锁定选定的行(SELECT ... FOR UPDATE
)来执行此操作。当然,您需要处理锁定超时。
允许更好的并发性的另一个选择是在处理记录之前更新记录状态。您可以引入中间状态,例如'In progress'
,并在查询条件中包含状态。