ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> DB2 >> 一次涉及到物化视图的DB2 Insert性能问题的诊断

一次涉及到物化视图的DB2 Insert性能问题的诊断(1/3)

来源:网络整理     时间:2017-05-11     关键词:

本篇文章主要介绍了" 一次涉及到物化视图的DB2 Insert性能问题的诊断",主要涉及到方面的内容,对于DB2感兴趣的同学可以参考一下: 一 问题描述:今天得到Devops兄弟的报告,说某个数据插入job突然间慢了很多,平时10多分钟就能完成的,跑了10个小时左右没有完成。 Devops的Lock...

一 问题描述:

今天得到Devops兄弟的报告,说某个数据插入job突然间慢了很多,平时10多分钟就能完成的,跑了10个小时左右没有完成。 Devops的Lock兄弟也做的最初始的问题诊断,他通过topas,看到db2sys占用了60%左右的机器内存,进入db2top 选择“D - Dynamic SQL” 看到如下简单的SQL一直在执行。

INSERT INTO xxx.xxx_xxx_DOMAIN ("ID","DATE_ENTERED",...,"ID_REF") VALUES (?,?,... ? )
有如下现象:

    1. 每秒钟插入的条数很少,只有1,2条。 (通过Dynamic SQL输出中的 Num Execution可以看出)

    2. 非常巨大的Rows Read. (通过Dynamic SQL输出中的 Rows Read可以看出)

二 问题诊断:

得到Lock兄弟的求救信号后,开始如下调查:

1.  查看OS的运行情况,因为此台服务器是AIX,所以使用topas.

  •    CPU使用率60%, CPU wait% 很小
  •    磁盘很空闲,Disk busy% < 1%
  •    网络的char out, char in都很小,所以网络也不是瓶颈
  •    内存几本没有pagein 和 pageout

       总体情况是CPU比较繁忙,并且从topas下面显示的top 进程可以看出是DB2的主进程db2sys占用了主要的CPU.

2. 既然确认此问题是DB2自己的问题,而不是运行在此服务器上别的程序造成的问题,那么进入db2top来分析问题。

  •   使用db2top => D - Dynamic SQL,确认Lock报告的问题。 看到的情况跟Lock描述基本一致。
  •   使用db2top => B - Bottlenecks , 看到CPU, sorts Memory都是有Agent 18542占用绝大部分
  •   使用db2top => l - Sessions =>a=>18542, 查看18542的详细资源运行情况,确认18542正在运行上述insert, 并且有大量的Rows read

3.  为了更加仔细的研究18542,使用snapshot 查看详情:

db2 get snapshot for application agentid 18542 > ss18542.txt        

   Application SnapshotApplication handle                         = 18542
Application status                         = UOW Executing
...
TP Monitor client application name         = CLP /db/xxx/db2backup/prod_exports/fxh/Jenkins/scripts/fxxximport_
...
request start timestamp         = 05/10/2017 17:06:56.378866
...
Snapshot timestamp                         = 05/11/2017 01:51:44.116395
...
Total sorts                                = 840970
Total sort time (ms)                       = 305002
...Buffer pool data logical reads             = 2272525558Buffer pool data physical reads            = 0
Buffer pool temporary data logical reads   = 1893280
Buffer pool temporary data physical reads  = 0
Buffer pool data writes                    = 0
Buffer pool index logical reads            = 24552769
...
Rows inserted                              = 314587
Rows read                                  = 17625559307...
Dynamic SQL statement text:
INSERT INTO xxx.xxx_xxx_DOMAIN ("ID","DATE_ENTERED",...,"ID_REF") VALUES (?,?,... ? )

很多有用的信息:

相关图片

相关文章