我编写了一个简单的Java应用程序,它基本上执行一个包含4个连接表的SELECT
SQL语句。然后我执行SQL语句并将其保存到resultSet
。当我循环遍历resultSet
时,在300K +的200K +记录中,我收到此错误消息:
SQLCODE = -913 SQLSTATE = 57003 SQLERRMC = schema.table; table,driver = 4.1xxx
根据我到目前为止所读到的内容,这意味着它出现了死锁错误。是否有可能在如此小的结果集(300K)和select语句上发生?
答案 0 :(得分:0)
当两个或多个事务处于锁定等待的循环中时发生死锁,并且锁定超时不会中断循环。默认情况下,在表或索引扫描期间执行行锁定时,DB2会在确定行是否符合查询条件之前锁定每一行。您的表或索引扫描时间过长,还有其他未决事务。
这是一篇关于DB2锁的精彩文档。 http://www.ibm.com/developerworks/data/library/techarticle/dm-0509schuetz/还有一些关于如何解决锁定问题的建议。