Database DB2操作超时或死锁

Database DB2操作超时或死锁,database,jdbc,db2,Database,Jdbc,Db2,我有一个JDBC DB2error,操作超时或死锁,错误号:-913 场景:操作1正在更新表中的一行,完成该操作可能需要2分钟 操作2正在尝试按引号编号读取同一行 有一个默认的锁定CS(事务读取提交)。 60秒后我看到“操作超时或死锁”, 这是超时还是死锁场景 有没有办法通过增加连接超时或锁定超时来避免死锁 如果您能提出建议,请连续两分钟告知?你到底想干什么 在任何情况下,是的,这是一个超时问题-您的操作2使用(假定)默认超时。这可以设置为每个文件,并且(至少对于iSeries,可能对于所有版本

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

场景:操作1正在更新表中的一行,完成该操作可能需要2分钟

操作2正在尝试按引号编号读取同一行

有一个默认的锁定CS(事务读取提交)。 60秒后我看到“操作超时或死锁”, 这是超时还是死锁场景

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


如果您能提出建议,请连续两分钟告知?你到底想干什么

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


我不确定是否可以仅从SQL设置此值-如果是您的平台(您没有指定),您必须使用iSeries的本机命令
CHGPF
CHGLF
(参数
WAITFILE
/
WAITRECORD
,以秒为单位)。不过我并不真的推荐它-看看你是否能让update语句运行得更快。。。或者,请参阅关于更改体系结构以允许某种方式。您可以通过修改locktimeout参数来增加锁定超时

db2 update db cfg using locktimeout 180
此更改会导致等待2分钟。你也可以把-1,无限期地等待

更多信息


该场景不是死锁,因为操作2不保存任何资源,它只是尝试访问正在更新的行。

该操作可能正在加载一个blob,如果传输速度慢,2分钟可能是正常的。要检查当前超时:
db2 get db cfg for[databasename]
where[databasename]是数据库的名称