DB2锁定超时

时间:2013-02-28 21:29:32

标签: db2

我们有一个包含四个克隆的WebSphere集群。相同的代码在每个克隆上运行。我们让Quartz定期启动运行代码的作业。

代码尝试更新表中的行,以便只有一个克隆能够成功更新表,然后该克隆将运行其余的作业。类似的东西:

update <table> set status = 'RUNNING' where job_name = 'JOB1' and status = 'STOPPED'

执行update语句时,我们不会启动事务。

我们有时会看到所有四个克隆都无法更新表,并且都会出现锁定超时错误(sql代码-913)。

我们还尝试了另一种方法,我们开始一个事务,选择查看该行是否被标记为正在运行,如果没有,则执行更新和提交;然后回滚。

那有同样的问题。

我们尚未尝试的一个解决方案是将选项修改为&#34;选择更新&#34;虽然从我的googleing,我怀疑这是否会有所帮助。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这最终不是一个问题(这就是我在没有自己检查的情况下听取某人的意见)。

我在开发环境中用两个克隆测试了这个。其中一个克隆偶尔会看到-913锁定超时错误,而另一个克隆会成功更新表格。除了丑陋的日志消息之外,一切都按预期工作。

但是,通常情况下,我们不会得到-913错误,而是一个警告,指示没有要从其中一个克隆更新的行。再次,这种行为很好。

因此,正如我们原先认为的那样,Clockwork-Muse也建议,以这种方式使用UPDATE语句来强制执行锁定在DB2中运行得很好。

相关问题