签到成功

知道了

CNDBA社区CNDBA社区

DB2 使用CPU 高问题

2022-01-07 10:47 2527 0 原创 DB2
作者: ayy216226

1、问题描述
linux操作系统部署了DB2,CPU使用率100%https://www.cndba.cn/ayy216226/article/103913https://www.cndba.cn/ayy216226/article/103913https://www.cndba.cn/ayy216226/article/103913

2、处置思路:
CPU分sys(kernel)和user两部分,使用top命令可以看到哪部分使用率高。sys高和user高排查方法不一样。sys高的话,需要收集操作系统的一些数据,如果user高且是DB2进程,需要收集DB2相关数据。
1)使用top命令查看,是user使用高,且发现db2sys使用大部分CPU。
2)%usr CPU高,一般意味着系统正在执行应用的代码,很大可能是Db2执行的SQL语句导致的。需要找到占用CPU较多的SQL语句,看看在执行什么操作。
可以通过mon_get_pkg_cache_stmt找到占用CPU较多的动态SQL语句
db2 “select TOTAL_CPU_TIME/NUM_EXEC_WITH_METRICS as AVG_CPU_TIME, NUM_EXEC_WITH_METRICS, substr(STMT_TEXT,1,100) as STMT_TEXT from table( mon_get_pkg_cache_stmt (null, null,null,null)) as T where T.NUM_EXEC_WITH_METRICS <> 0 order by AVG_CPU_TIME DESC fetch first 5 rows only”
3)通过这个sql语句找到cpu使用最高的5条sql语句https://www.cndba.cn/ayy216226/article/103913https://www.cndba.cn/ayy216226/article/103913

https://www.cndba.cn/ayy216226/article/103913
https://www.cndba.cn/ayy216226/article/103913

3、问题结论
需要优化这几条sql语句:比如通过建立适当的索引来避免表扫描、当需要锁较多时而对并发性要求不高时,直接在整个表上加锁、不需要那么多数据的时候使用fetch first xxx rows only等。https://www.cndba.cn/ayy216226/article/103913

https://www.cndba.cn/ayy216226/article/103913
https://www.cndba.cn/ayy216226/article/103913

版权声明:本文为博主原创文章,未经博主允许不得转载。

DB2,CPU高

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
ayy216226

ayy216226

关注
  • 5
    原创
  • 0
    翻译
  • 0
    转载
  • 0
    评论
  • 访问:13126次
  • 积分:20
  • 等级:注册会员
  • 排名:第77名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ