加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

DB2死锁超时Sqlstate:40001,原因代码68是由于使用SQL从servlet

发布时间:2020-12-12 06:25:11 所属栏目:MsSql教程 来源:网络整理
导读:我从servlet到DB2一个接一个地调用update语句.我收到错误sqlstate 40001,原因代码68,我发现它是由于死锁超时. 我该如何解决这个问题? 可以通过设置查询超时来解决吗? 如果是,那么如何在servlet中使用更新语句或在何处使用它? 解决方法 原因代码68已经告诉
我从servlet到DB2一个接一个地调用update语句.我收到错误sqlstate 40001,原因代码68,我发现它是由于死锁超时.

>我该如何解决这个问题?
>可以通过设置查询超时来解决吗?
>如果是,那么如何在servlet中使用更新语句或在何处使用它?

解决方法

原因代码68已经告诉您这是由于锁定超时(死锁是原因代码2)可能是由于其他用户同时运行查询使用您正在访问的相同数据或您自己的多个更新.

首先运行db2pd -db locktest -locks显示db2命令行的详细信息,以查看锁定的位置.然后你需要运行类似的东西:

select tabschema,tabname,tableid,tbspaceid 
from syscat.tables where tbspaceid = # and tableid = #

使用从db2pd命令输出获得的ID号填入#符号.

一旦你看到锁的位置,这里有一些提示:

?有时可以通过确保所有应用程序以相同的顺序访问其公共数据来减少解锁频率 – 例如,他们访问(并因此锁定)表A中的行,然后是表B,然后是表C,以及等等.

取自:http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.trb.doc/doc/t0055074.html

推荐阅读:http://www.ibm.com/developerworks/data/library/techarticle/dm-0511bond/index.html

附录:如果您的servlet或其他有罪应用程序正在使用被发现参与死锁的select语句,如果新更新(或插入)数据的准确性不重要,您可以尝试将with ur附加到select语句.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读