我的情况需要:
操作A不是数据库操作,可能需要一段时间才能运行,并且它不可逆。操作B不是数据库操作,但运行速度非常快。该序列在多个服务器上的多个线程上执行。
目前我们没有锁定,因此我们偶尔会看到多次执行动作A,而它应该只发生一次。我认为我唯一的解决方案是以某种方式用获取锁步骤和释放锁步骤包装上面的序列,我不知道如何做到这一点
我看过a similar question,其答案是添加“锁定”字样。和'查询时间'列的行。然而,在那种情况下,OP并不担心经常重新获得锁定。如果我每次想要执行序列时都必须旋转等待上一次锁定到期,那么我的服务器性能可能就会消失。
我可以在这里使用SQL内置的东西吗?
答案 0 :(得分:5)
将“X”值更新为“待定”。
完成操作A后,将“待处理”更新为任何内容。
无需锁定。