问题:
Db2系统,业务人员反馈说他们的业务并发上不去,每秒执行的事务太少,要求提升性能。
分析:反馈该性能问题的时候,业务在讨论某个表的大字段问题,于是使用mon_get_pkg_cache_stmt表函数查看SQL语句在各个项目上花费的时间,查到如下结果:
db2 "select TOTAL_ACT_TIME, TOTAL_ACT_WAIT_TIME, DIRECT_READ_TIME, DIRECT_WRITE_TIME,
substr(STMT_TEXT,1,30) as STMT_TEXT from table( mon_get_pkg_cache_stmt (null, null,null,null)) as t order by TOTAL_ACT_TIME desc fetch first 10 rows only"
可以看到瓶颈在DIRECT_READ_TIME/DIRECT_WRITE_TIME,LOB字段不经过DB2的缓存,会占用较多的DIRECT I/O。
解决:整改相关的LOB字段,修改为inline。