oracle长事务执行越来越慢,记一次DB2事务长时间未提交引起的批量变慢问题

批量操作在数据库更新后显著变慢,原因是DB2中一个长时间未提交的事务。分析发现,该事务持有大量锁定,导致其他并发的insert...select语句因latch等待而变慢。通过强制结束该事务,系统恢复正常。问题根源是隔离级别设置,使得在锁等待时进行多版本读,从而引发了latch争用。
摘要由CSDN通过智能技术生成

上周四应用更新后,周五晚上的批量明显变慢,检查DB2数据库发现大量会话都停留在同一个insert ... select ... 语句,抓取了db snap, application snap, dynamic snap 和 db2pd -eve信息

发现效率慢的这条insert语句中,select部分有一张表有大量的锁定,找到持有锁定的AppHandl,发现是周五中午的一个文件导入更新操作一直未提交,将这个连接force后就恢复正常了。

具体分析如下:

先来看当时的latch wait信息:Latches:

Address Holder Waiter Filename LOC LatchType HoldCount

0x0780000001540478 1029 0 ../include/sqle_workload_disp.h 1391

SQLO_LT_sqeWLDispatcher__m_tunerLatch 1

0x0A00040000061908 200755 214051 sqlpgrlg.C 1553

SQLO_LT_SQLP_DBCB__ReadBufSem 0

0x0A00040000061908 200755 172871 sqlpgrlg.C 1553

SQLO_LT_SQLP_DBCB__ReadBufSem 0

0x0A00040000061908 200755 173128 sqlpgrlg.C 1553

SQLO_LT_SQLP_DBCB__ReadBufSem 0

0x0A00040000061908 200755 195620 sqlpgrlg.C 1553

SQLO_LT_SQLP_DBCB__ReadBufSem 0

holder都是200755,waiter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值