【问题标题】:H2 database - concurrent connections strategyH2数据库-并发连接策略
【发布时间】:2012-02-02 22:52:33
【问题描述】:

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

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

【问题讨论】:

    标签: database transactions h2 concurrency


    【解决方案1】:

    一种常见的解决方案是使用“状态”列:

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

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

    如果您想防止行卡在“处理”状态(例如,因为会话/连接已关闭),那么您可以添加一个“处理会话”列并用当前会话填充它(函数 @987654321 @) 处理时。要确定会话是否仍然存在,请使用表 INFORMATION_SCHEMA.SESSIONS

    【讨论】:

      猜你喜欢
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多