DB2游标稳定性-死锁

DB2游标稳定性-死锁,db2,isolation-level,Db2,Isolation Level,我一直认为READ_COMMITTED(DB2称之为游标稳定性(CS))意味着不锁定读取,而只读取提交的数据。刚刚出现的一种情况让我意识到,DB2在CS中的读操作上锁定(尽管非常短暂) 因为它很简单,所以很容易出现死锁。我们有一个更新X行的客户机代码,然后调用一个web服务,该web服务需要读取X行。因为如果web服务失败,客户机代码需要能够回滚,所以它必须在web服务调用期间保持该锁 由于服务在READ_COMMITTED上运行,我认为它不会等待记录,而只会读取旧数据并继续(这很好) 除了在R

我一直认为READ_COMMITTED(DB2称之为游标稳定性(CS))意味着不锁定读取,而只读取提交的数据。刚刚出现的一种情况让我意识到,DB2在CS中的读操作上锁定(尽管非常短暂)

因为它很简单,所以很容易出现死锁。我们有一个更新X行的客户机代码,然后调用一个web服务,该web服务需要读取X行。因为如果web服务失败,客户机代码需要能够回滚,所以它必须在web服务调用期间保持该锁

由于服务在READ_COMMITTED上运行,我认为它不会等待记录,而只会读取旧数据并继续(这很好)


除了在READ_UNCOMMITTED中运行(这让我很担心)之外,还有什么方法可以让我的服务在READ事件中不进入锁等待?我主要操作的是java和hibernate,但如果您纯粹从DB2方面了解一些技巧,即使这些技巧也会提供信息。

游标稳定性(DB2方式)中的默认行为是,读卡器被阻塞了。但是,使用新的类似Oracle的功能,可以改变这种行为

根据您的DB2版本,如果迁移了,可能只需要更改为
CUR\u COMMIT
级别

请看一看,这很清楚地解释了这种行为


有关更多信息,请参见。

查看您的DB2服务器运行在哪种类型的操作系统上,以及DB2的哪个版本?Web服务在做什么?您可以在以后简单地更新数据库吗?我相信DB2足够聪明,可以在会话期间共享锁。如果有两个不同的系统/会话访问同一行…为什么?