gpt4 book ai didi

java - com.ibm.db2.jcc.am.SqlTransactionRollbackException : DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001,SQLERRMC=68,DRIVER=3.65.110

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:08 27 4
gpt4 key购买 nike

知道这有很多问题。这是因为该行数据被其他线程更新,而其他线程无法获取锁。不过,我想询问更多细节:

我有一些代码如下:

// catch all for hibernate super exception
public SystemErrorCode map(final org.hibernate.JDBCException dae) {
log.info( "dae : " + dae );
log.info( "dae error code : " + dae.getErrorCode( ) );
log.info( "dae sql : " + dae.getSQL( ) );
log.info( "dae sql exception : " + dae.getSQLException( ) );
log.info( "dae sql state : " + dae.getSQLState( ) );
log.info( "dae cause : " + dae.getCause( ) );
log.info( "dae message : " + dae.getMessage( ) );
return new SystemErrorCode( "DAO0005", SYSTEM_DAO );
}

这是日志:

dae : org.hibernate.exception.LockAcquisitionException: could not execute native bulk manipulation query
dae error code : -911
dae sql : update PHistory SET currentStatus = :currentStatus , MODIFIEDDATETIME = CURRENT TIMESTAMP where pHistoryId = :pHistoryId
dae sql exception : com.ibm.db2.jcc.am.SqlTransactionRollbackException: DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001, SQLERRMC=68, DRIVER=3.65.110
dae sql state : 40001
dae cause : com.ibm.db2.jcc.am.SqlTransactionRollbackException: DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001, SQLERRMC=68, DRIVER=3.65.110
dae message : could not execute native bulk manipulation query

当我检查代码时,实际上没有其他线程来更新同一条记录,因为 pHistory 是主线程并且是唯一的。

但是,我在生产中不断遇到这个问题,并且我无法在本地或 SIT 或 UAT 中模拟它。我试图知道哪个线程,或者从我的代码的哪个位置实际上锁定了同一行,然后导致此错误。

最佳答案

我终于找到了根本原因并设法解决了它。实际上是由于PHistory表记录数量庞大,且与其他表的联动较多,索引较少造成的。

我对此查询运行db2e​​xpln,发现添加建议的索引将提高 99% 的性能。添加索引并监控几个月后,好消息是我的程序中不再发生此异常。

所以,它实际上不是由其他线程更新同一行引起的,我以错误的方式找到了解决方案。直到我检查索引。因此,以后如果您遇到类似的问题,不妨尝试一下索引,看看结果如何。

关于java - com.ibm.db2.jcc.am.SqlTransactionRollbackException : DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001,SQLERRMC=68,DRIVER=3.65.110,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50229659/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com