仅在DB2 select中获取未检索的行

时间:2014-04-10 09:34:16

标签: db2

我有一个BPM应用程序,我每隔5分钟从DB2数据库轮询一些行,调度程序R1使用以下查询 - - 从表中选择*,其中STATUS ='新'

基于返回的行我做了一些处理,然后将这些行的状态更改为“Read”。

但是,虽然这个处理工作正在完成,但它需要5分钟以上,同时调度程序R1会运行并获取上次运行中已经拾取的一些案例。

如何确保每个调度程序选取上次运行中未选择的行。我在select语句中需要做哪些更改?请你。

1 个答案:

答案 0 :(得分:1)

  

如何确保每个调度程序选取上次运行中未选择的行

您需要让每个调度程序都知道其他调度程序选择的内容。例如,您可以通过锁定选定的行(SELECT ... FOR UPDATE)来执行此操作。当然,您需要处理锁定超时。

允许更好的并发性的另一个选择是在处理记录之前更新记录状态。您可以引入中间状态,例如'In progress',并在查询条件中包含状态。