H2数据库 - 并发连接策略

时间:2012-02-02 22:52:33

标签: database transactions h2 concurrency

我有几个相同的应用程序独立运行。每个从数据库中读取一行(基于某些标准),执行一系列操作,最后更新该行。 因此,我想确保应用程序开始处理一行,不会被另一行处理。换句话说,我希望应用程序选择下一个可用行。 我该如何实现呢?

我尝试使用“select ... for update”,MVCC,不同类型的事务隔离的不同策略,但暂时没有运气。

1 个答案:

答案 0 :(得分:1)

常见的解决方案是使用“州”栏:

  • 0未处理
  • 1处理
  • 2已处理

处理行时,将状态设置为1.处理完成后,将其设置为2.这将适用于所有数据库。

如果要防止行处于“处理”状态(例如因为会话/连接已关闭),那么您可以添加一个列'processing_session'并用当前会话填充它(函数{{ 1}})处理时。要查看会话是否仍然存在,请使用表SESSION_ID()