上周四应用更新后,周五晚上的批量明显变慢,检查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