我们有一个带有四个克隆的 WebSphere 集群。每个克隆上运行相同的代码。我们让 Quartz 定期启动运行代码的作业。
该代码尝试更新表中的一行,以便只有一个克隆能够成功更新表,然后该克隆将运行其余的作业。就像是:
update <table> set status = 'RUNNING' where job_name = 'JOB1' and status = 'STOPPED'
当我们执行更新语句时,我们不会启动事务。
我们有时看到的是所有四个克隆都无法更新表,并且都出现锁定超时错误(sql 代码 -913)。
我们还尝试了另一种方法,即启动事务,选择以查看该行是否标记为正在运行,如果没有,则执行更新并提交;否则回滚。
那有同样的问题。
我们尚未尝试的一种解决方案是将选择修改为“选择更新”,尽管从我的谷歌搜索来看,我怀疑这是否会有所帮助。
有什么建议么?