DB2操作超时或死锁

时间:2011-12-02 18:49:01

标签: database jdbc db2

我有JDBC DB2error,操作超时或死锁,错误号:-913。

场景:操作1在表中执行更新行,这可能需要2分钟才能完成操作。

操作2试图按报价编号读取同一行。

有一个默认锁定CS(transaction_read_commited)。 我在60秒后看到'操作超时或死锁', 这是超时或死锁情况吗?

有没有办法可以通过增加连接超时或锁定超时来避免死锁?

周围的建议将是欣赏..

2 个答案:

答案 0 :(得分:2)

您可以通过修改locktimeout参数来增加锁定超时。

db2 update db cfg using locktimeout 180

这改变了等待2分钟。你也可以把-1,无限期地等待。

了解更多信息http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.config.doc/doc/r0000329.html

该方案不是死锁,因为操作2不包含任何资源,它只是尝试访问正在更新的行。

答案 1 :(得分:0)

连续2分钟?他们想要做什么?

在任何情况下,是的,这是一个超时问题 - 您的操作2正在使用(假定的)默认超时。这可以设置为每个文件,并且(至少对于iSeries,可能对于所有版本的DB2)默认为60秒。

我不确定是否可以单独使用SQL设置此值 - 您必须使用iSeries的本机命令CHGPFCHGLF(参数WAITFILE / {{1} },在中),如果那是你的平台(你没有指定)。我不是真的推荐它 - 看看你是否无法更快地运行更新语句...或者,请参阅更改您的架构以允许某种方式。

相关问题