一个ETL JOB运行的一个SQL,每天定时跑,每次跑的时候都相当慢,几个小时出不来结果。但是第二天abort之后重跑就会很快。正常情况下db2batch测试,这个查询只要不到20秒时间。而且在快和慢的时候执行计划也是一样的。
Access Plan:
-----------
Total Cost: 571921
Query Degree: 1
Rows
RETURN
( 1)
Cost
I/O
|
1.88828e+06
>HSJOIN
( 2)
571921
275231
/--------+--------
1.88828e+06 730836
IXSCAN MSJOIN
( 3) ( 4)
20170.8 551196
8021.41 267209
| /---+----
1.88828e+06 3.15462e+06 0.231671
INDEX: DWDM TBSCAN FILTER
XPKT_GLOBALSR_DIM ( 5) (
Q4 385174 165175
205245 61964.2
| |
3.15462e+06 940587
SORT TBSCAN
( 6) ( 9)
385174 165175
205245 61964.2
| |
3.15462e+06 940587
TBSCAN SORT
( 7) ( 10)
380723 165175
205245 61964.2
| |
4.06e+06 940587
TABLE: DWDM IXSCAN
T_OPPTY_DIM ( 11)
Q1 163918
61964.2
|
1.88828e+06
INDEX: DWDM
IDX010141456570000
Q2
1) iostat,vmstat监控IO和内存都没问题。
2) user CPU很高,整个CPU利用率将近100%
3) 快照发现row fetch相当慢,几乎是几秒几百条数据的样子。
这种情况出现可能的原因是?
如何监控并找出问题?
DB2 9.1 + AIX
Thanks
附件:
snapagent.log (29.27 KB)
dynamic.log (103.13 KB)
snapagent.log (21.01 KB)
db2trc.fmt.txt (9.71 MB)
收起