DB2死锁超时Sqlstate:40001,原因代码68是由于使用SQL从servlet调用的更新语句
|
我从servlet到DB2一个接一个地调用update语句.我收到错误sqlstate 40001,原因代码68,我发现它是由于死锁超时. >我该如何解决这个问题? 解决方法原因代码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语句,如果新更新(或插入)数据的准确性不重要,您可以尝试将 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
