你们那边 DB2 是哪个版本的? DB2 v9.7以后,Currently Commited功能是默认开启的,可以避免大量的读写事务并发导致的锁等问题。
你这个问题,建议从两方面入手:
1、查看生产数据库监控,看看锁资源是否充足,锁的相关数据库配置是否合理(LOCKLIST、MAXLOCKS、LOCKTIMEOUT等)看看db2diag.log 是否经常出现锁升级现象。
2、排查锁等事件中参与的并发应用,看看是否存在下面问题:
并发应用之间的执行顺序是否合理?
并发应用的隔离级别是否设置合理(注意,大多数应用中间件的隔离级别默认是 RS)?
持有锁事务是否业务逻辑过于复杂、执行时间过长,占用大量的锁资源太长时间?
并发应用中,涉及的游标应该尽快关闭,不要使用模糊游标!
并发应用的 SQL是否可以优化,避免访问不必要的数据?
并发应用的 SQL 是否有效地使用了索引?
我想到的,目前就这么多,其他思路,社区其他高手多多补充吧